python打包

python支持多种打包方式

准备

执行如下命令把相关依赖都导出

python 复制代码
pip froze > requirements.txt

mac/win

可以打成.exe 可执行文件

首先导入依赖

python 复制代码
pip install pyinstaller
  1. 多个文件打包
python 复制代码
 pyinstaller -D run.py

其中 run.py 是你的启动文件

执行完后会生成一个 dist 的文件夹 ,里面有run.exe ;

run.exe 还有一个同级目录,里面是项目的一些依赖

  1. 单个文件打包
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,
)
相关推荐
进击的雷神43 分钟前
OpenClaw 太重、启动太慢?我试了试这个 Rust 重写的轻量版 AI 助手网关
开发语言·人工智能·rust·zeroclaw
辛苦才能44 分钟前
C++ 红黑树(上):五条规则背后的近似平衡与插入的三类情况
开发语言·c++
Είναι η κοπέλα1 小时前
Python 虚拟环境:venv、conda 与 Python 版本选择全解
开发语言·python·conda
蒲公英eric1 小时前
Python工具链与LaTeX排版:把兵器配齐
人工智能·python·算法·数学建模·数学建模工具
程序员老陆1 小时前
嵌入式 Qt:QWidgets 还是 QML / Qt Quick?
开发语言·qt
.道阻且长.1 小时前
C++11 :新的类功能,lambda,包装器
开发语言·c++·后端
言乐61 小时前
JavaScript概括前端原理
开发语言·前端·javascript·python·ecmascript
liulilittle1 小时前
短期内不存在通用 AI 工作流魔法
大数据·开发语言·c++·人工智能·llm·agent·tools
郝学胜-神的一滴1 小时前
C++ Templates 03:手写一个Stack看透模板核心机制
开发语言·c++·产品运营·软件工程·产品经理