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

打包模块问题:

  1. import的模块打包会自动关联
  2. 通过字符串引入的模块,打包时无法自动关联
    例如通过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

posted @ 2024-06-03 04:42  星空28  阅读(13)  评论(0编辑  收藏  举报