下面描述幾個我在使用pyinstaller工具,生成exe文件遇到的坑,及解決方案。
一、路徑中存在中文。
1、錯誤信息:
2、原因:exe程序的路徑中存在中文。如:
二、找不到模塊(module)
1、錯誤信息:
2、原因分析:
我的python程序是在pycharm中寫的,在pycharm中,我創建的工程名稱是PS_HY,python主程序是main.py,其他的py文件全部是各個網站的採集模塊。
在用pycharm寫程序及調試時,模塊的調用是通過這種方式:
from 工程名.模塊文件名 import 模塊類名
注意這個時候,模塊我是全放在跟main.py文件同一目錄下的。但是以同樣的目錄結構,去生成exe文件時,就會出現no module的錯誤。
解決辦法是:在準備將py文件生成exe時,在main.py的目錄中,創建一個與工程名同名的文件夾,將所引用的模塊文件,全部放入此文件夾中,然後再生成exe程序。
注意生成exe的命令格式,如:
pyinstaller -F main.py -p PS_HY\growatt.py -p PS_HY\kstar.py -p PS_HY\MGMTigen.py -p PS_HY\MGMTshine.py -p PS_HY\sanJing.py -p PS_HY\data\psData.py -p PS_HY\data\userData.py
三、生成的exe文件在自己電腦上運行正常,在別人電腦上不正常。
1、錯誤信息:
(此項沒有截圖,好像錯誤信息種類挺多的,依照解決)
2、原因分析:
一般我們自己的電腦在寫python程序之間,會配置各種各樣的程序環境支持庫,NET.、C++等等,而要使用我們發佈的exe程序的用戶,他們可能從未接觸編程,可能只是普通辦公電腦,從未添加這些庫,而想要找到他們缺少的是哪個dll文件,更是麻煩,這個時候我們只需要一個軟件搞定。點擊下載,當安裝時出現NET.Frame版本錯誤時,可安裝第二個文件後再嘗試,點擊下載第二個軟件。
暫時我就遇到了這三方面的問題,還有一個不單獨分析了,是在使用驗證碼識別模塊的時候,需要將【tessdata】文件夾複製到與main.exe同目錄下,才能正常運行。
大家還有其他方面的問題,歡迎一起討論。