Tkinter开发出来的程序如何方便其他人用呢?用命令行去执行Python文件?当然不是,打包成应用程序,更能方便其他人使用。本章讲的是如何在Mac下打包应用程序,这个过程当然是比较繁琐,当然可能会遇到问题。以下是我在打包过程中遇到的问题并解决,最终成功打包应用程序。祝你好运!
使用py2app打包Mac应用程序,你也可以选择其他的,我也没研究其他,如果你有好的方法可以一起交流。
注:以下都是在终端输入
1.安装py2app
输入:pip install py2app
注:报错:pip:commond not found,是你没有安装pip,需要安装
2.安装pip
输入:sudo easy_install pip
1.进入项目工程:
输入:cd项目路径
2.创建setup.py
输入:py2applet --macke-setup python文件
例如:py2applet --macke-setup main.py
注:报错:py2applet:command not found
3.解决报错py2applet:command not found
输入:sudo find / -name "py2applet" -type f
接下来需要输入你的Mac密码,查找需要大概5分钟,结果如下:
find: /dev/fd/xx: No such file or directory
find: /dev/fd/xx: No such file or directory
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/bin/py2applet
py2applet路径:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/bin/py2applet,还是没找到那手动切换到这目录去找下是否有py2applet
4.执行步骤1,进入项目工程
输入:py2applet路径 --macke-setup python文件
例如:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/bin/py2applet --macke-setup main.py
如果成功了会显示Wrote setup.py,在你的工程下会有setup.py文件,如果没成功请接着看
1.报错信息为:
*** creating application bundle: MyApp ***
error: [Errno 1] Operation not permitted
MacOSX El Captain引入的SIP功能会影响py2app创建应用,什么叫SIP呢?自己百度吧。
2.解决步骤1:禁用SIP,csrutil disable
输入:csrutil status
csrutil disable:SIP安全已关闭
csrutil enable:SIP安全已开启
3.解决步骤2:设置SIP
- 重启Mac,同时按住Command+R,直到进入Recovery Model
- 点击Utilities —>Terminal
- 在Terminal输入csrutil disable或csrutil enabel,回车
- 重启Mac,完成
4.解决步骤3:删除受限制的文件标志
输入:sudo chflags -R norestricted /System/Library/Frameworks/Python.framework
那么问题就解决了,重新执行创建setup.py步骤
1.清除旧的内容
输入: rm -rf build dist
2.创建app应用
输入:python setup.py py2app
等待创建,创建完成后,项目目录会多build和dist文件夹,程序应用就在dist文件下。
本章就到这就结束了,在打包过程中你遇到了有什么问题或者其他好的方法可以联系我。