目的:
“讓正在走彎路的人走上直路”
作者的彎路
我按照網上的教程,用pyinstaller 打包三個py源程序,然後生成一個exe文件。但是,每次exe文件執行後,彈出一個框後迅速消失,內容大概是‘XXX modul 不存在‘,然後上網查各種打包缺失模塊的資料,大多都是不可行的。
解決方案
目前存在我知道的是用pyinstaller是有兩種方法打包py代碼的:
1.直接用pyinstaller -F/-D xxx.py類似這樣的方式,這種方式很基礎,但往往出問題。
2.用spec文件,pyinstaller xxx.spec
spec文件就是在你執行第一種方式時,它會產生在你當前操作的文件下,是自動產生的。如果出現缺失模塊的問題(這也是作者出現的問題),就在這個文件裏面添加你的模塊地址。
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['project_ui.py','python_sap.py','file_model.py'],
#在pathex中添加你的python模塊的地址,我的模塊都是在pkg文件下,然後放進去。
pathex=['python_sap.py', 'file_model.py','C:\\Users\\10003144\\PycharmProjects\\test_dataming\\venv\\pkg','D:\\script2'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='project_ui',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False )
其他的參數建議去pyinstaller官網查看。
配置完spec文件後,使用pyinstaller xxx.spec,就可以了。在這期間也查閱了很多文章,都寫得不錯,感謝!