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所在的目錄,
改成下面這樣的就好了
-
FONT_PATH = os.environ.get('FONT_PATH', os.path.join(os.path.dirname(sys.executable), 'DroidSansMono.ttf'))
-
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了
這是問題解決之後總結的,所以中間過程記不詳細了,遇到的問題比這要多的多了,下次要隨時準備記錄纔好啊
最後感謝程序員大本營這篇文章給予的幫助