Python---pyinstaller打包
安装:pip install pyinstaller
注意事项:
1.支持mac、win
2.配合虚拟环境打包。
a.在mac\win系统上开发(为他这个程序创建一个虚拟环境)
b.开发...
c.开发完毕后
pip freeze > reqirements.txt
d.打开win虚拟机
e.创建虚拟环境
f.安装项目依赖
pip install -r reqirements.txt
g.安装pyinstaller -F xxxxx
产出: xxx.exe
多文件打包: pyinstaller -D app.py -n app2
单文件打包: pyinstaller -F app.py
单文件打包,且对打包后的exe文件重命名为app2: pyinstaller -F app.py -n app2
打包路径问题:
本地文件路径获取,此方式打包不会出错:
方式一:BASE_DIR = os.path.dirname(os.path.realpath(sys.argv[0]))
方式二:
if getattr(sys, 'frozen', False):
BASE_DIR = os.path.dirname(sys.ececutable)
else:
DASE_DIR = os.path.dirname(os.path.abspath(file))
打包模块问题:
- import的模块打包会自动关联
- 通过字符串引入的模块,打包时无法自动关联
例如通过importlib进入的模块
示例
import importlib
card = importlib.import_module('utils.card')
v1 = card.get_number()
print(v1)
引入的card模块,在打包过程中需要手动导入
在打包过程中生成的.spec文件中隐含模块hiddenimports中加入'utils.card',在打包.spec文件
再打包:pyinstaller -F app.spec