????????PyInstaller 可以将 Python 程序打包为独立的可执行文件,不需要用户手动安装 Python 和相关依赖。这使得分发和部署变得更加简单,方便将 Python 程序交付给其他用户或客户。
pip install pyinstaller
-F
或--onefile
:生成单个独立的可执行文件而不是一个文件夹,这对于分发和部署来说更方便。
-w
或--windowed
:在 Windows 上生成一个没有控制台窗口的可执行文件,适用于 GUI 应用程序。
-c
或--console
:在 Windows 上生成一个带有控制台窗口的可执行文件,适用于命令行应用程序。
-n NAME
或--name=NAME
:指定生成的可执行文件的名称。
-i ICON
或--icon=ICON
:指定可执行文件的图标文件。
--add-data "SRC;DEST"
:将额外的非 Python 文件(例如配置文件、数据文件等)复制到可执行文件的目录下。
--add-binary "SRC;DEST"
:将二进制文件(例如 DLL 文件)复制到可执行文件的目录下。
--hidden-import MODULE
:手动添加导入的模块,以确保它们被正确地包含在可执行文件中。
--exclude MODULE
:排除特定的模块以减小可执行文件的大小。
--upx
:使用 UPX 压缩可执行文件,这可以减小文件的大小。
pyinstaller xxx.py
?高阶使用
pyinstaller -Fw D:\my_Script.py -i D:\my.ico --distpath D:\dist_tool --name my_Tool --upx-dir D:\dist_tool\upx-4.0.2-win64
- 打包后的程序无法运行
- 打包后的程序体积较大
- 打包后的程序出现兼容性问题
- 打包后的程序出现运行效率等问题
- 打包后的程序出现安全问题
文件路径和相对路径:由于 PyInstaller 将所有文件打包成单个可执行文件,因此文件路径和相对路径可能会发生变化。确保你的程序中使用了相对路径或动态获取文件路径的方法,以避免在打包后无法找到文件的问题。
依赖管理:PyInstaller 会尝试自动检测和打包程序所依赖的库和资源文件,但有些情况下可能会出现依赖管理的问题。确保你在打包前已经安装了所有程序所需的依赖,并且这些依赖对于 PyInstaller 是可访问的。如果遇到依赖未被正确打包或加载的问题,可以考虑手动添加依赖项。
- 针对该项目用到的依赖库,单独配置一套打包用的极简环境.
- 使用--upx参数,在引进压缩工具的帮助下,减少打包程序的体积;
问题出在pyinstaller包不能正常找到pywin32模块的位置
需要在目录 Lib\site-packages\PyInstaller\hooks手动创建添加一个文件
hook-win32api.py
?hook-win32api.py内容如下
from PyInstaller.utils.hooks import collect_submodules
hiddenimports = collect_submodules('win32com')