(python)Pyinstaller使用以及相关问题

2024-01-03 16:42:16

前言

????????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

问题和解决方法

常见问题

  1. 打包后的程序无法运行
  2. 打包后的程序体积较大
  3. 打包后的程序出现兼容性问题
  4. 打包后的程序出现运行效率等问题
  5. 打包后的程序出现安全问题

解决办法

程序闪退
  • 文件路径和相对路径:由于 PyInstaller 将所有文件打包成单个可执行文件,因此文件路径和相对路径可能会发生变化。确保你的程序中使用了相对路径或动态获取文件路径的方法,以避免在打包后无法找到文件的问题。

  • 依赖管理:PyInstaller 会尝试自动检测和打包程序所依赖的库和资源文件,但有些情况下可能会出现依赖管理的问题。确保你在打包前已经安装了所有程序所需的依赖,并且这些依赖对于 PyInstaller 是可访问的。如果遇到依赖未被正确打包或加载的问题,可以考虑手动添加依赖项。

体积过大
  • 针对该项目用到的依赖库,单独配置一套打包用的极简环境.
  • 使用--upx参数,在引进压缩工具的帮助下,减少打包程序的体积;

?特殊问题

pywin32未正确打包

问题出在pyinstaller包不能正常找到pywin32模块的位置

需要在目录 Lib\site-packages\PyInstaller\hooks手动创建添加一个文件

hook-win32api.py

?hook-win32api.py内容如下

from PyInstaller.utils.hooks import collect_submodules

hiddenimports = collect_submodules('win32com')

文章来源:https://blog.csdn.net/marst437730201/article/details/135358504
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。