当前位置: 代码网 > it编程>前端脚本>Python > Python打包成exe(windows)或者app(mac)实践

Python打包成exe(windows)或者app(mac)实践

2026年04月01日 Python 我要评论
一、问题版本为了避免版本不一问题,想要肯定成功的可以按照我的版本来我的python版本为3.8.1安装的pyinstaller为4.5.1二、windows安装先卸载旧的,如果从没安装过可以省略pip

一、问题版本

为了避免版本不一问题,想要肯定成功的可以按照我的版本来

  • 我的python版本为3.8.1
  • 安装的pyinstaller为4.5.1 

二、windows安装

先卸载旧的,如果从没安装过可以省略

pip uninstall pyinstaller -y

然后安装4.5.1,并且为避免出现下载连接超时指定镜像

pip install pyinstaller==4.5.1 -i https://pypi.doubanio.com/simple/

然后进入你写好的python文件的文件夹中,打开命令行窗口

pyinstaller -f -w -i app_icon.ico --add-binary "d:\python\dlls\tcl86t.dll;." --add-binary "d:\python\dlls\tk86t.dll;." tosolist.py

解释:

  • -f:打包成 单个 .exe 文件(所有依赖都整合到一个文件里,方便携带);
  • -w:打包成 无控制台窗口 的程序(打开 .exe 时不会弹出黑框,符合 “窗口版” 需求);
  • -i app_icon.ico:设置图标(也可以先删掉,等打包完成之后再设定图标也可以);
  •  --add-binary "d:\python\dlls\tcl86t.dll;." --add-binary "d:\python\dlls\tk86t.dll;."
  • 这部分是指定你的python中的dll文件,避免出现未知错误,如果不写也能成功那更好。
  • 如果要写,那么请将路径更换成你自己的路径。如果找不到,那就在控制台输入
  • where python
  • tosolist.py 这个就是你要打包的python文件名称

到这步就完成了,双击dist文件夹中的exe文件就行了。你也可以发送快捷方式到桌面。

三、mac安装

大致逻辑相同

# 先升级 pip(避免旧版本报错)
python3 -m pip install --upgrade pip -i https://pypi.doubanio.com/simple/

# 安装 pyinstaller(无需指定版本,默认会装兼容当前 python 的稳定版)
python3 -m pip install pyinstaller -i https://pypi.doubanio.com/simple/

然后进入到对应文件夹下

#输入以下命令,回车开始打包(针对 tkinter 程序优化,避免 macos 下的依赖缺失):
pyinstaller -f -w --add-binary "/library/frameworks/python.framework/versions/3.8/lib/python3.8/lib-dynload/_tkinter.cpython-38-darwin.so:." --add-data "/library/frameworks/python.framework/versions/3.8/lib/python3.8/tkinter:tkinter" password_manager_gui_fixed.py

命令参数解释( macos 重点!)

参数作用
-f打包成「单个文件」(最终会生成 .app 应用,而非零散文件)
-w无控制台窗口(打开 .app 时不弹出终端黑框,符合窗口版需求)
--add-binary "xxx:."强制添加 macos 版 tkinter 的核心动态库(_tkinter.cpython-38-darwin.so),避免 “找不到 tkinter” 错误
--add-data "xxx:tkinter"复制 tkinter 的依赖文件到打包目录,确保窗口控件正常显示
password_manager_gui_fixed.py你的 python 脚本文件名(必须和实际一致)

路径注意事项

上述命令中的 3.8 对应 python 3.8 版本,若你的 python 是 3.9,需将路径中的 3.8 改成 3.9(比如 /library/frameworks/python.framework/versions/3.9/...);

若不知道 tkinter 依赖的具体路径,可在终端输入以下命令查询,然后替换到打包命令中:

# 查找 _tkinter 动态库路径
find /library/frameworks/python.framework -name "_tkinter.cpython-*.so"
# 查找 tkinter 依赖文件夹路径
find /library/frameworks/python.framework -name "tkinter" -type d

然后依然在dist文件夹中使用app文件就可以了

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com