Py2app:不允许操作

Sir*_*kes 9 python macos pygame py2app

我想创建一个名为'dodgeball'的应用程序,我有我的主脚本(使用pygame)和我的setup.py脚本.我需要一个名为ball.bmp的图像.

在我的setup.py脚本中,我有以下代码:来自setuptools import setup

APP = ['dodgeball.py']
DATA_FILES = ["ball.bmp"]
OPTIONS = {'argv_emulation': True}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)
Run Code Online (Sandbox Code Playgroud)

每当我尝试使用终端中的以下内容制作应用程序时:

python setup.py py2app
Run Code Online (Sandbox Code Playgroud)

一切正常

*** creating application bundle: dodgeball ***
Run Code Online (Sandbox Code Playgroud)

然后它返回一个错误:

error: [Errno 1] Operation not permitted: '/Users/**********/Desktop/Dodgeball/dist/dodgeball.app/Contents/MacOS/dodgeball'
Run Code Online (Sandbox Code Playgroud)

如果它有帮助,我在Mac OS X El Capitan(10.11)上.我知道El Capitan和任何Apple更新一样,都会有新的软件和功能可能会破坏这样的东西.

如何修复此错误,然后允许py2app创建一个功能齐全的应用程序?

cod*_*lic 8

我有同样的问题。而不是跑步

python setup.py py2app
Run Code Online (Sandbox Code Playgroud)

我试过

python3 setup.py py2app
Run Code Online (Sandbox Code Playgroud)

而且效果很好。希望这可以帮助。


Jak*_*e W 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'
Run Code Online (Sandbox Code Playgroud)

我做了一些研究并找到了解决方案:1)禁用SIP; 2)删除Python.framework上的受限文件标志.它对我有用.

禁用SIP

  1. 重启你的Mac.

  2. 在OS X启动之前,按住Command + R并保持按住直到看到Apple图标和进度条.发布.这会引导您进入Recovery.

  3. 从Utilities菜单中,选择Terminal.

  4. 在提示符下键入以下内容:

    csrutil status
    csrutil disable
    reboot
    
    Run Code Online (Sandbox Code Playgroud)

您可以按照上述步骤重新启用SIP,但使用:

csrutil enable
Run Code Online (Sandbox Code Playgroud)

参考文献:

删除受限制的文件标志

sudo chflags -R norestricted /System/Library/Frameworks/Python.framework
Run Code Online (Sandbox Code Playgroud)

正如https://forums.developer.apple.com/thread/6987中所述


Nic*_*ley 1

如果您构建并安装自己的py2app而不是依赖于操作系统捆绑的 py2app,则不会发生这种情况。

在您的 virtualenv 中,安装 Mercurial(如果需要),然后:

pip install hg+https://bitbucket.org/ronaldoussoren/py2app/
Run Code Online (Sandbox Code Playgroud)

py2app然后应该可以正常工作。