使用pyinstaller打包python程式

2021-09-29 03:46:04 字數 2067 閱讀 6570

使用python3.7+anaconda環境編寫了個程式,裡面使用了numpy pandas xgboost等包

想用pyinstaller打包成exe,pip install pyinstaller後無法打包成exe檔案

別人說是pyinstaller不相容python3.7

遂安裝py3.6環境,試圖隔離不需要的包安裝,失敗。只好安裝venv:

pip install virtualenv
,命名此環境為venv1,什麼包都沒有

參考 cmd(管理員)進入 \venv1\venv\scripts\ 資料夾後輸入activate,啟用環境,此時提示符前會有(venv)字樣

pip install 需要的包,只安裝需要的包,這樣可以減小打包後程式大小,並防止奇奇怪怪的錯誤

還是這個venv環境,安裝好後cd進入python程式所在的路徑:

pyinstaller -d **

*.py

打包出exe檔案了!在打包資料夾的dist資料夾裡,命令列cd到exe檔案所在路徑後執行,出錯,提示distutils模組出錯,

modulenotfounderror: no module named 'distutils'

[10373

] failed to execute script

但distutils是python自帶的模組,所以不是包沒裝全的問題,找到如下方法:

# work-around for 

import distutils

if distutils.distutils_path.endswith(

'__init__.py'):

distutils.distutils_path = os.path.dirname(distutils.distutils_path)

將以上**貼入打包exe時生成的 *.spec檔案開頭,清理build目錄重新生成exe檔案就可以了。生成方法:

pyinstaller -d **

*.spec

pyinstaller又會像剛才一樣在打包一次,期間會問你此操作會刪除dist資料夾全部的檔案要繼續嗎,摁y繼續,然後就又生成了乙個exe檔案,還在dist資料夾裡。

命令列cd到exe檔案所在路徑後執行,出錯,提示缺少xgboost的dll。解決辦法:開啟venv所在的*\venv1\venv\lib\site-packages\xgboost*,發現裡面確實沒有dll,可以從網上找xgboost.dll檔案放裡面,如下圖。我從網上找的都不行,從虛擬環境外面的anaconda資料夾裡找到了,複製貼上到下圖所在的資料夾。

然後把整個資料夾扔到打包出的exe檔案所在同目錄下。不用再打包一遍了,直接cmd裡執行,成功。

##########################分割線#################################

轉天打包另乙個檔案,有了一些新問題

這次沒在venv裡打包,直接在3.6&anaconda環境裡打包成功了

生成exe後執行,丟擲錯誤 modulenotfounderror: no module named 'typedefs『

查閱得此文章

基本情況差不多,稍微有點區別

在打包過程中生成的***.spec檔案中(***是自己打包時的py檔名)的第二行新增如下兩行**:

import sys

sys.setrecursionlimit(

5000

)

然後再輸入命令 pyinstaller ***.spec --hidden-import sklearn.neighbors.typedefs,進行打包

成功

pyinstaller打包使用

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

Pyinstaller的打包使用

toc 1,pyinstaller的安裝 執行 pip install pyinstaller 2,常用打包方式 單一檔案,pyinstaller f i iconame.ico filename.py 非單一檔案,pyinstaller d i iconame.ico filename.py 3,...

pyinstaller打包程式

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