pyinstaller、jieba、wordcloud打包exe過程中遇到的問題總結一下

pyinstaller、jieba、wordcloud打包exe過程中遇到的問題總結一下

最近做了一個詞雲項目,前期的數據收集就不再說了

前期一切正常順利,py運行ok,打包後真是一言難盡,問題一堆一堆的

剛開始提示提示jieba中nolocal called語法錯誤錯誤指向matplotlib\__init__.py 411行

剛開始以爲一次不能聲明兩個nonlocal,於是分開寫成兩行

執行,仍然報語法錯誤,

一頓焦頭爛額之後,靈光乍現,是不是搞成Python2了,於是把pyinstaller卸載了,重新裝了一遍

這個問題消失了.....消失了........

中間還有一堆問題我也記不住了

其中升級了setuptool還是steptool來着

升級了pyinstaller

升級了jieba

然後提示No such file or direction ...\...\...\..\stopwords

感覺要放棄了

再堅持一下試試

F i leNo t FoundError: [Errno 2] No such file or directory: ' C: Jsers VADMINI"IAp IpDataVLocalT empXl MEI 40842 wordc loudVs topwords '[72521 Failed to execute script c iyu

報錯定位在wordcloud包裏面

wordcloud.py第30行附近,打開之後是這樣的

其實是絕對路徑和相對路徑問題,在py中運行時會定位文件的絕對路徑(stopwords文件放在此位置),一旦打包exe,該路徑此時已經沒有意義了(還記得刻舟求劍的故事麼?),此時要做就是將絕對路徑改爲相對路徑,指向exe所在的目錄,

改成下面這樣的就好了


 
  1. FONT_PATH = os.environ.get('FONT_PATH', os.path.join(os.path.dirname(sys.executable), 'DroidSansMono.ttf'))

  2. STOPWORDS = set([x.strip() for x in open(os.path.join(os.path.dirname(sys.executable),'stopwords')).read().split("\n")])

同時將初始的stopwords文件(這個自己可以搜出來)

也轉移到該目錄下(如果還想py也能跑,打包之後將該更改復位,好像改來改去有點麻煩,不如這樣搞)留着備用

最後又提示empty separator

定位在wordcloud.py第29行

發現是split()切分字符串沒有給出切分的參考字符

然後加了個“\n”運行ok了

這是問題解決之後總結的,所以中間過程記不詳細了,遇到的問題比這要多的多了,下次要隨時準備記錄纔好啊

最後感謝程序員大本營這篇文章給予的幫助

http://www.pianshen.com/article/996685916/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章