pyinstaller相关使用方法 & 踩坑
pyinstaller相关使用方法
最近有把python项目打包成.exe,所以找到了pyinstaller这款工具,
第一次使用的时候踩了一些坑,在此记录一下。
参数表
参数 | 说明 |
---|---|
-h , --help |
显示帮助信息 |
-v , --version |
显示 PyInstaller 版本 |
-F , --onefile |
生成单个可执行文件 |
-D , --onedir |
生成包含多个文件的目录(默认) |
--add-data <源:目标> |
添加额外的数据文件(多个用 ; 分隔,Windows 使用 ; ,Linux/macOS 使用 : ) |
--add-binary <源:目标> |
添加额外的二进制文件 |
--hidden-import <模块> |
指定隐藏导入的模块 |
--exclude-module <模块> |
排除某些模块 |
--collect-submodules <模块> |
收集指定模块的所有子模块 |
--collect-data <模块> |
收集指定模块的数据文件 |
--icon <图标文件> |
指定应用程序图标(.ico 或 .icns 文件) |
--name <应用名> |
指定生成的可执行文件名称 |
--log-level <LEVEL> |
设置日志级别(DEBUG, INFO, WARN, ERROR, CRITICAL) |
--noconsole , --windowed |
在 Windows/macOS 上不显示终端窗口(适用于 GUI 应用) |
--console |
在 Windows/macOS 上显示终端窗口(默认) |
--clean |
清理缓存并重新编译 |
--noupx |
禁用 UPX 压缩 |
--strip |
去除符号表(Linux/macOS) |
--debug |
生成调试模式的可执行文件 |
--key <密钥> |
使用密钥对 Python 代码进行加密 |
--uac-admin |
以管理员权限运行(Windows) |
--uac-uiaccess |
允许应用程序绕过 Windows 用户账户控制(UAC) |
--specpath <路径> |
指定 .spec 文件的存放目录 |
--distpath <路径> |
指定生成的可执行文件存放目录(默认 dist/ ) |
--workpath <路径> |
指定工作目录(默认 build/ ) |
--runtime-tmpdir <路径> |
指定临时目录 |
--bootloader-ignore-signals |
让 bootloader 忽略 SIGINT 和 SIGTERM (Linux/macOS) |
更多详细信息可以参考官方文档:PyInstaller 官方文档
注意事项 | 常见的坑
- 打包
如果打包成单个文件体积会小一些,但是启动会更慢,因为在启动时需要创建临时文件夹,所以推荐使用生成文件夹的方式,尤其是你需要使用json等格式存储配置文件的情况下。
- 执行的位置
不要在你的项目目录内执行pyinstaller命令,至少要在项目目录的父目录执行。
- 导入问题
如果遇到相对导入出错的情况,可以试试用sys添加路径然后绝对导入的方式。
- 进一步自定义
可以在.pac文件中,对hidden_imports
等选项进行编辑(我还没尝试过),该项可以让pyinstaller发现那些不是由普通import语句导入的依赖
本文作者:Gold_stein
本文链接:https://www.cnblogs.com/smartljy/p/18691360
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下