安装 pyinstaller
打开 cmd 窗口, 输入 pip install pyinstaller, 命令行输出 successfully 表示成功.
生成 exe 文件
一, 单个 py 文件
在 py 文件目录下, 打开 cmd 窗口, 输入 pyinstall -F XXX.py, 执行成功的话, 会在当前目录生成一个 dist 文件夹, XXX.exe 文件在此文件夹下.
添加版本信息 https://www.perfcode.com/p/706.html :
安装好 pyinstaller 后, 我们会得到两个辅助工具, pyi-grab_version 和 pyi-set_version.
1. 使用 pyi-grab_version 创建版本信息模板文件, 首先找到一个有版本信息的 XXX.exe 工具, 在此目录下打开 cmd 窗口, 输入 pyi-grab_version XXX.exe, 执行成功后, 会在此目录下获得一个 file_version_info.txt 文件, 这个就是我们要的文件版本信息模板文件.
2. 有了模板文件后, 我们需要修改里面的内容, 换成我们自己想要的版本内容, 最好用 nopad++ 打开.
3. 在打包时加入版本信息.
方法一, 还没有打包成 exe 的 py 文件
pyinstaller -F --version--file file_version_info.txt XXX.py
方法二, 已经打包好的 exe
pyi-set_version file_version_info.txt XXX.exe
二, 多个 py 文件
1, 尽量将所有要执行的 py 文件放在一个大文件夹下 (里面允许有多个文件夹)
2, 命令行输入 pyi-makespec main.py(main.py 为 Python 程序的入口 py 文件)
3, 现在文件夹下生成了一个 main.spec 文件和两个文件夹
4, 编辑 main.spec 文件, 找到 a = Analysis(), 先修改第一个参数, 这里面的列表都必须是 py 文件
- a = Analysis(['pin.py'],
- pathex=['F:\\python_work\\pytest\\pin'],
- 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)
如果用到了其他的 py 文件, 就在第一个列表里面加入相应 py 文件的路径, 如果是同级目录下, 直接写文件名, 如果不在同一个文件下, 写完整路径.
- a = Analysis(['pin.py', 'cursor_control.py'],
- pathex=['F:\\python_work\\pytest\\pin'],
- 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)
如果用到了非 py 文件需要打包, 那么找到 datas 列表, 将非 py 文件的路径与文件夹名写在元组里.
例如:
- datas = [('C:\\project\\test\\images','images'),('C:\\project\\test\\EventLogs','EventLogs')]
- datas:
第一个参数是 Python 中的非 py 类型文件的路径
第二个参数是非 py 文件保存此资源的文件夹名称, 要和路径中的文件夹名称相同.
来源: http://www.bubuko.com/infodetail-3293247.html