python工程可采用pyinstaller进行打包,需提前安装pyinstaller模块,安装方法就是(installer模块好像也需要安装这个不确定)
python -m pip install pyinstaller
打包方法一:
先cd到需要打包的工程内部(工程主文件所在的文件夹地址),然后执行打包命令pyinstaller -选项 xxx.py 选项详解: -D 与 -F 相反用法(默认是此模式),生成一个文件目录包含可执行文件和相关动态链接库和资源文件等,对于打包结果较大的项目,选用-D生成目录相比-F的打包方式,执行速度更快,但包含更加多的文件 -F 表示在 dist 文件夹下只生成单个可执行文件(内部包含所有依赖),不加默认会在 dist 生成一大堆依赖文件+可执行文件。 -w 表示去掉控制台窗口,如果你的程序是有界面的,可以不写这个参数, -c 表示去掉窗框,使用控制台,推荐使用,会打印各种信息和log到控制台,加上这个参数生成的spec中的console=True -p 表示自己定义需要加载的类路径,项目中包含多个自建模块的时候需要加上 -p aaa.py -p bbb.py -p ccc.py -i 表示可执行文件的图标,后面跟图标的路径,可以自定义exe文件的图标,我尝试了好多次没成功 打包完毕后在 dist 文件夹下双击项目启动文件就可以执行了 其他选项参考此博客
此时整个内部分为两步 1.先生成默认的xxx.spec文件 2.直接根据默认的main.spec文件进行执行pyinstaller -D xxx.spec完成默认的打包
方法二, 推荐编辑使用.spec文件进行打包
此方法推荐,因为当工程中有一些资源文件或者其他非python文件时,编辑.spec文件执行打包比较方便, 如果你没有.spec文件的话则可以随便找个工程或者py文件现场生成一个.spec文件,然后编辑他,之后执行即可打包 如下面例子
则在D:\dev_test_project下面会生成.spec文件对她编辑即可
.spec的格式和编辑方法
spec文件是一个python脚本,其默认的结构如下:
spec文件中主要包含4个class: Analysis, PYZ, EXE和COLLECT. Analysis以py文件为输入,它会分析py文件的依赖模块,并生成相应的信息,修改的主要是这个部分 PYZ是一个.pyz的压缩包,包含程序运行需要的所有依赖,一般不需要修改 EXE根据上面两项生成,里面包含图标、版本(如果命令有会自动生成,命令没传也可以手动修改),可以设置生成的exe的名字 COLLECT生成其他部分的输出文件夹,COLLECT也可以没有,一般不需要更改,可以设置生成的项目文件夹名称 .spec文件样例
import sys
import os
sys.setrecursionlimit(5000)
block_cipher = None
project_dir_path = os.path.abspath(os.curdir)
a = Analysis(
['weihang_test_py.py'],
pathex=[project_dir_path],
binaries=[],
datas=[(project_dir_path + "lib\\img_file", "lib\\img_file"), (project_dir_path + "lib2\\img_file2", "lib2\\img_file2")],
hiddenimports=["pandas", "pandas._libs", "xxxxx", "xxxxx"],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=["need_not_model1", "need_not_model2"],
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,
[],
exclude_binaries=True,
name='weihang_test_py',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True,
disable_windowed_traceback=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='weihang_test_py')
修改后在命令行执行即可打包,打包的工程在dist目录中生成
pyinstaller test_project_main.spec
详细情况也可参照此博客
|