PyInstaller是一个流行的Python打包工具,它可以将Python代码打包成可执行文件,使得你可以在没有安装Python解释器的环境中运行你的应用程序。:

安装

使用pip命令来安装PyInstaller。在终端或命令提示符中运行以下命令:

  1. pip install pyinstaller

打包

先安装所有需要的依赖

  1. pip install -r .\requirements.txt

方式一:使用打包命令

简单命令:

  1. pyinstaller main.py

复杂命令:
Window - Powershell:

  1. pyinstaller -n SnakeGame `
  2. -i img/icon.png `
  3. --clean --onedir `
  4. --windowed `
  5. --add-data="img;img" `
  6. --exclude-module="numpy" `
  7. main.py

Window - cmd:

  1. # 打包到一个目录
  2. pyinstaller -n PID_Tool -i img/logo.ico ^
  3. --clean --onedir ^
  4. --add-data="res;res" ^
  5. --add-data="img;img" ^
  6. --exclude-module="matplotlib" ^
  7. app.py

Linux/Mac:

  1. # 打包成单文件
  2. pyinstaller -n PID_Tool -i img/logo.ico \
  3. --clean --onefile \
  4. --add-data="res:res" \
  5. --add-data="img:img" \
  6. --exclude-module="matplotlib" \
  7. main.py

方式二:编写打包脚本

假如你的程序名称为PID_GUI_Tool,程序入口文件为main.py,则在入口文件同级目录创建一个package.py,写入如下内容

  1. import PyInstaller.__main__
  2. # 这里的是不需要打包进去的三方模块,可以减少软件包的体积
  3. excluded_modules = [
  4. "scipy",
  5. "matplotlib",
  6. ]
  7. append_string = []
  8. for mod in excluded_modules:
  9. append_string += [f'--exclude-module={mod}']
  10. PyInstaller.__main__.run([
  11. '-y', # 如果dist文件夹内已经存在生成文件,则不询问用户,直接覆盖
  12. # '-p', 'src', # 设置 Python 导入模块的路径(和设置 PYTHONPATH 环境变量的作用相似)。也可使用路径分隔符(Windows 使用分号;,Linux 使用冒号:)来分隔多个路径
  13. 'main.py', # 主程序入口
  14. '--onedir', # -D 文件夹
  15. # '--onefile', # -F 单文件
  16. # '--nowindowed', # -c 无窗口
  17. '--windowed', # -w 有窗口
  18. '-n', 'PID_GUI_Tool',
  19. '-i', 'img/logo.ico',
  20. '--add-data=res;res', # 用法:pyinstaller main.py –add-data=src;dest。windows以;分割,mac,linux以:分割
  21. '--add-data=img;img', # 用法:pyinstaller main.py –add-data=src;dest。windows以;分割,mac,linux以:分割
  22. *append_string
  23. ])

执行python package.py或直接在编辑器中运行即可。

打好包,可执行程序在同级目录的dist子目录即可找到

问题及解决

如果打包时,出现如下报错:

  1. from PIL import Image
  2. ModuleNotFoundError: No module named 'PIL'

可通过安装如下依赖解决:

  1. pip install pillow