环境安装
- 安装python 3.12版本
- 安装pyinstaller工具 采用命令
pip install pyinstaller
打包操作
【注意】在windows、macos等系统打包的可执行文件,只可在对应操作系统上使用
- 执行命令
pyinstaller xxx.py
默认执行多文件分发打包模式,意味着并非集中打包在一个可执行文件中 - 执行
pip freeze > requirements.txt
获取项目所有使用到的python模块,在其他主机上执行pip install -r requirements.txt
进行安装python模块
存在问题
- 单执行文件打包模式可能存在文件路径读取的问题[多文件打包模式也可使用]
原因:单执行文件在执行时先进行解压,解压的位置不可控制,导致无法索引到依赖文件。
解决方法:import os import sys # 通过os.path.realpath() 获取执行文件的真实路径 BASE_PATH = os.path.dirname(os.path.realpath(sys.arvgs[0]))
- 动态导入出现无法找到自定义模块的问题
原因:在打包过程中没有主动导入动态加载模块的模块,importlib.import_module("py.test")
等效于from py import test
解决方法:- 先执行打包操作
- 修改spec后缀文件
hiddenimports=["py.test"]
- 执行打包命令
pyinstaller -F xxx.spec
-F表示采用多文件打包模式