【python】PyInstaller打包
关于PyInstaller
将py文件打包成独立的可执行的文件,无需目标机器安装python环境即可运行程序。
- 安装:
pip install pyinstaller
- 验证安装:
pyinstaller --version
- 参考:https://pyinstaller.org/en/stable/
使用PyInstaller
pyinstaller -F -i icon.ico python.py
生成文件:
dist/
:存放生成的可执行文件build/
:临时构建文件(可删除)__pycache__/
:编译缓存(可删除)
常用参数:
-F
:生成单个可执行文件-D
:默认参数,生成文件夹形式的可执行包-w
:隐藏控制台窗口(GUI程序专用)-i icon.ico
:指定程序图标--clean
:清理临时文件-n name
:指定生成文件名
注意事项
依赖处理
- 程序中使用的外部资源(如图片/配置文件)需手动复制到
dist/
目录 - 使用
--add-data
参数可自动包含资源文件
文件大小优化
- 使用UPX压缩工具可减小生成文件体积
pyinstaller -F --upx-dir=/path/to/python.py
解决读取文件路径问题
- PyInstaller会将你的脚本和依赖打包成一个可执行文件,运行时会在临时目录解压文件。此时:
- 开发环境:文件路径基于脚本所在目录
- 打包后环境:文件路径基于临时解压目录(
sys._MEIPASS
)
- 动态获取脚本所在目录
-
# 获取当前日期 now = datetime.now() year = str(now.year) month = str(now.month).zfill(2) # 获取程序运行目录 if getattr(sys, 'frozen', False): # 打包后环境:返回临时解压目录 current_dir = os.path.dirname(sys.executable) else: # 开发环境:返回脚本所在目录 current_dir = os.path.dirname(os.path.abspath(__file__)) # 构建日志目录路径 logs_dir = os.path.join(current_dir, 'logs', year, month) if not os.path.exists(logs_dir): os.makedirs(logs_dir) # 构建基础日志文件名 base_log_file_name = os.path.join(logs_dir, f"{log_name}_{now.strftime('%Y%m%d')}")
-
THE END
0
二维码
打赏
海报


【python】PyInstaller打包
关于PyInstaller
将py文件打包成独立的可执行的文件,无需目标机器安装python环境即可运行程序。
安装:pip install pyinstaller
验证安装:pyinstaller --ve……

共有 0 条评论