pyinstaller打包exe後無法執行錯誤解決

2021-09-08 03:16:22 字數 2348 閱讀 1770

1、執行環境說明

python版本3.7

直接使用pip進行安裝pywin32、pyinstaller

pip install pywin32

pip install pyinstaller

2、使用了第三方庫的情況

建議在打包之前務必找到第三方庫的包,把包複製到到跟myfile.py同目錄下,然後再使用以上2種方式打包,否則會打包失敗或者即使打包成功,程式也會閃退。pyinstaller -p引數是新增的pyinstaller打包程式時的掃瞄路徑,假設venv\lib\site-packages是包存放路徑,那麼也可以使用以下命令打包:

pyinstaller -p venv\lib\site-packages -f ***.py

3、failed to execute script 錯誤,缺少依賴庫。

首先使用

pyinstaller -f -w code.py

進行exe打包,得到的單個.exe檔案,執行後提示failed to execute script 錯誤

排錯過程:使用pyinstaller -d code.py進行exe打包,得到乙個目錄檔案,通過命令列執行.exe檔案提示the 'six' package is required; normally this is bundled with this package錯誤

說明pyinstaller打包後,需要six等庫,最終確認需要在code.py中新增以下庫:

import six

import packaging

import packaging.version

import packaging.specifiers

import packaging.requirements

當然,six和packaging庫建議使用pip安裝。加入以上庫後,使用pyinstaller -d code.py打包執行不再出錯。

另:1)pyinstaller -p 庫路徑 ,-p引數是導入庫的目錄,將會將該庫路徑下的庫都打包進來

2) --hidden-import 包名, 將匯入指定隱藏庫

這兩種方法都可以將需要的庫打包進去.

4、failed to execute script 錯誤,使用pyinstaller -d code.py進行exe打包,執行後提示 「unable to find qt5core.dll on path」,如下圖:

參考:pyqt5庫對系統變數的載入存在bug,在主程式中pyqt5庫import之前就對系統變數進行手動設定,import**如下:

import sys, os

if hasattr(sys, 'frozen'):

os.environ['path'] = sys._meipass + ";" + os.environ['path']

5、failed to execute script 錯誤,使用pyinstaller -d code.py進行exe打包,執行後提示 importerror: dll load failed while importing win32api: 找不到指定的模組。

上面的錯誤,就是import win32api,打包後缺少執行dll引起的。

將python\lib\site-packages\pywin32_system32中的dll檔案拷貝過來就行了。

6、找不到資料資料夾

有些程式包含了資料資料夾,不能直接按資源檔案方式打包,需要在執行檔案所在的資料夾內建立這些資料檔案。一般情況下在指令碼中我們可以使用os.path.split(os.path.abspath( __file__))來的到code.py的路徑,然後拼接得到資料資料夾。但之後使用pyinstaller -f code.py打包成單個exe檔案,在未讀取資料資料夾的情況下執行正常,一旦開啟資料檔案,就會閃退,命令列視窗會顯示打不開資料檔案。因為pyinstaller會建立臨時資料夾temp,程式**在這個臨時資料夾中執行,我們可以用以下幾個語句來檢視正式執行路徑:

import sys

import os

print(sys.path[0])

print(sys.ar**[0])

print(os.path.dirname(os.path.realpath(sys.executable)))

print(os.path.dirname(os.path.realpath(sys.ar**[0])))

修改完成後,分別以以下三種方式打包,執行成功

pyinstaller -d code.py

pyinstaller -f code.py

pyinstaller -w -f code.py

pyinstaller打包py檔案為exe方法

pip install pyinstallersuccessefully installed pip xx.xx.xx 安裝成功 2.打包python檔案 1.進入打包檔案所在資料夾,比如 cmd輸入 cd d d llk進入資料夾,入口檔案為run.py 2.打包檔案 在當前路徑下輸入 等待打包結...

pyinstaller打包程式

python打包成exe檔案時,用的是pyinstaller 第一步安裝pyinstaller pip install pyinstaller第二步 pyinstaller f w i ico py其中 ico 是logo,py是你要打包的py檔案 我在打包時出現了struct.error unpa...

pyinstaller打包使用

pyinstaller manage.py 如果直接打包報錯,使用如下命令可以直接生成配置檔案 pyi makespec d manage.py生成的配置檔案格式如下 mode python coding utf 8 block cipher none a analysis impala etl.p...