目的:
“让正在走弯路的人走上直路”
作者的弯路
我按照网上的教程,用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,就可以了。在这期间也查阅了很多文章,都写得不错,感谢!