python支持多种打包方式
准备
执行如下命令把相关依赖都导出
python
pip froze > requirements.txt
mac/win
可以打成.exe 可执行文件
首先导入依赖
python
pip install pyinstaller
- 多个文件打包
python
pyinstaller -D run.py
其中 run.py 是你的启动文件
执行完后会生成一个 dist 的文件夹 ,里面有run.exe ;
run.exe 还有一个同级目录,里面是项目的一些依赖
- 单个文件打包
python
pyinstaller -F run.py
执行完后会生成一个 dist 的文件夹 ,里面只有run.exe ,没有其他依赖;
它其实是把相关的依赖都压缩起来了,你执行的时候会把这些依赖解压在一个临时目录下执行;
但是这里有一个坑,如果你项目需要读配置,比如.evn 它是没办法处理好的;
读取配置
读取配置的打包方式用多个文件,并且把配置放到.exe 同级目录
python
pyinstaller -D run.py
闪退
如果打出的.exe 文件双击就闪退,可以先打开一个终端,把它扔进终端再执行,这样就不会闪退,可以看到错误信息
SPEC文件
如果遇到动态加载模块,或者文件配置需要修改SPEC 文件,修改后不能再用 pyinstaller -D run.py 打包,因为会覆盖SPEC 文件
这个时候需要用到如下
python
pyinstaller -D run.spec
SPEC 文件预览
python
a = Analysis(
['run.py'],
pathex=[],
binaries=[],
datas=[('app/static', 'app/static')],
hiddenimports=['uvicorn.logging', 'uvicorn.loops.auto', 'uvicorn.protocols.http.auto', 'uvicorn.protocols.websockets.auto', 'uvicorn.lifespan.on'],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)