1. 程式人生 > >關於匯入結巴分詞的程式打包成exe無法正常執行的問題

關於匯入結巴分詞的程式打包成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執行環境的錯誤,網上也有說是因為安裝的包不統一,有些事官方包,有些是非官方包造成的,不過我百度谷歌很久還是沒有解決這個問題,最後,在同事的電腦上打包,執行,這個錯誤就消失了。有點崩潰。