我想创建一个名为“躲避球”的应用程序。我有我的主脚本(使用pygame)和我的setup.py脚本。我需要一个名为ball.bmp的图片。
在我的setup.py脚本中,我有以下代码: 来自setuptools导入设置
APP = ['dodgeball.py']
DATA_FILES = ["ball.bmp"]
OPTIONS = {'argv_emulation': True}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app'],
)
每当我尝试使用终端中的以下内容制作应用程序时:
python setup.py py2app
一切都可以达到
*** creating application bundle: dodgeball ***
然后它返回一个错误:
error: [Errno 1] Operation not permitted: '/Users/**********/Desktop/Dodgeball/dist/dodgeball.app/Contents/MacOS/dodgeball'
如果有帮助,请访问Mac OS X El Capitan(10.11)。我知道El Capitan就像任何Apple更新一样,会有新的软件和功能可能会破坏这样的东西。
问题
如何修复此错误,然后允许py2app创建一个功能齐全的应用程序?
答案 0 :(得分:7)
将操作系统升级到OS X El Capitan(10.11.2)后,使用py2app打包应用程序时出现类似错误:
*** creating application bundle: MyApp ***
error: [Errno 1] Operation not permitted: '/Users/jake/work/my-app/dist/MyApp.app/Contents/MacOS/MyApp'
我做了一些研究并找到了解决方案:1)禁用SIP; 2)删除Python.framework上的受限文件标志。它对我有用。
重新启动Mac。
在OS X启动之前,按住Command + R并保持按住直到看到Apple图标和进度条。发布。这会引导您进入Recovery。
从Utilities菜单中,选择Terminal。
在提示符下键入以下内容:
csrutil status
csrutil disable
reboot
您可以按照上述步骤重新启用SIP,但使用:
csrutil enable
参考文献:
sudo chflags -R norestricted /System/Library/Frameworks/Python.framework
中提到的那样
答案 1 :(得分:2)
不要使用py2app提供的系统。运行这个解决了我的问题:
pip install --user --ignore-installed py2app
(我通常对需要禁用系统完整性保护的事情保持警惕)
答案 2 :(得分:2)
我遇到了同样的问题。而不是运行
python setup.py py2app
我试过
python3 setup.py py2app
它运作得很好。希望这会有所帮助。
答案 3 :(得分:1)
如果您构建并安装自己的py2app而不是依赖于捆绑操作系统,则不会发生这种情况。
在virtualenv中,安装Mercurial(如果需要),然后:
pip install hg+https://bitbucket.org/ronaldoussoren/py2app/
py2app
应该可以毫无问题地工作。
答案 4 :(得分:0)
我在我的Mac版本Sierra 10.12上遇到了同样的错误。我的灵感来自@Nicholas Riley的答案。
我的问题的背景:
$ py2applet --make-setup MyApplication.py
我的解决方案:
激活virtualenv
Spievats-MacBook-Pro:EasyGuiTest user$ source bin/activate
在virtualenv中安装py2app
(EasyGuiTest) Spievats-MacBook-Pro:EasyGuiTest brady$ pip install py2app
再次运行py2app
(EasyGuiTest) Spievats-MacBook-Pro:EasyGuiTest brady$ python setup.py py2app -A
这完美无缺!我希望它可以帮助别人。
答案 5 :(得分:0)
有同样的问题。 由于你们所有人都已经安装了py2app,因此请先将其卸载。
pip3 uninstall py2app
。
此后,至关重要的是使用-U
标志重新安装它。
请按照以下步骤操作:
pip3 install -U py2app
py2applet --make-setup YourApp.py
python3 setup.py py2app -A
在您的dist/
文件夹中,现在应该有一个可运行的应用程序。
然后您可以使用python3 setup.py py2app
在OS X Catalina&Mojave上验证