關於匯入結巴分詞的程式打包成exe無法正常執行的問題
-
問題描述
現在有一個程式,裡面引用了結巴分詞的包,主要是用來計算詞頻的,在原始碼環境下執行沒有任何異常,但是打包成exe的檔案時,打包成功了,卻無法正常的執行,提示找不到idf.txt檔案的位置
-
參考連結
如果報dict.txt的錯誤,也可以看看這個文章
-
解決方法
出現這個問題,個人覺得是比較坑的,因為,出現這個問題的原因是路徑的問題,是結巴分詞內部的程式碼某一段的路徑有一點不相容pyinstaller導致的。
首先,我們需要對程式碼進行一定的更改,如果報dict.tx錯誤,那麼加下面的程式碼:
import jieba jieba.set_dictionary("./dict.txt") jieba.initialize()
如果,報idf.txt錯誤,加下面的程式碼:
from jieba import analyse
jieba.analyse.set_idf_path("./idf.txt")
如果都報錯,就兩個程式碼都加
然後,針對於dict.txt錯誤,我們只需要在 你安裝python的路徑\Lib\site-packages\jieba 裡面找到dixt.txt,然後把dict.txt複製到你程式的同一個資料夾下面就行了
當然,對於這個問題,可以看我上面貼出的連結裡面的解決方法,因為我有點忘了是不是這樣解決的了。。。
下面,說idf.txt的問題,如果說找不到idf.txt檔案,那麼,我們需要更改結巴分詞的原始碼,然後將idf.txt檔案放到程式的同一個資料夾下面,首先找到這個檔案路徑:你的python安裝路徑\Lib\site-packages\jieba\analyse,你會看到裡面有一個idf.txt檔案,把它複製到你的程式所在的資料夾下面,然後,你還會看到一個tfidf.lpy檔案,開啟它,你會看到是這樣的:
我們只需要把紅框裡面的內容改成:
DEFAULT_IDF = './idf.txt'
如下圖:
這裡需要提醒一下,最好把原始碼儲存一下,我們只需要在用pyinstaller打包成exe的時候才需要這樣做,打包完成以後需要改回來,不然以後你用結巴分詞就會發現不能正常的工作。
照著上面的做了以後,再用pyinstaller打包,程式就能正常執行啦!
-
總結
解決這個問題分為兩步,一步是把idf.txt拷到程式所在的資料夾下面,第二步是更改tfidf.py的原始碼,記得打包完成以後改回來。
最後還要說一個問題,就是執行exe檔案出現了dll的錯誤,這個錯誤我還沒有解決,應該是python執行環境的錯誤,網上也有說是因為安裝的包不統一,有些事官方包,有些是非官方包造成的,不過我百度谷歌很久還是沒有解決這個問題,最後,在同事的電腦上打包,執行,這個錯誤就消失了。有點崩潰。