【问题标题】:Py2app: Operation not permittedPy2app:不允许操作
【发布时间】:2023-04-03 19:48:01
【问题描述】:

我想创建一个名为“dodgeball”的应用程序,并且我有我的主脚本(它使用 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 制作一个功能齐全的应用程序?

【问题讨论】:

  • 也许你应该尝试用sudo运行你的命令
  • 谢谢!它不再有错误,但现在当我尝试打开它时,它显示“躲避球错误”。 :(

标签: python macos pygame py2app


【解决方案1】:

在我将操作系统升级到 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 上的受限文件标志。它对我有用。

禁用 SIP

  1. 重新启动您的 Mac。

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

  3. 从实用程序菜单中,选择终端。

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

    csrutil status
    csrutil disable
    reboot
    

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

csrutil enable

参考资料:

删除受限文件标志

sudo chflags -R norestricted /System/Library/Frameworks/Python.framework

正如https://forums.developer.apple.com/thread/6987中提到的那样

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。而不是运行

    python setup.py py2app
    

    我试过了

    python3 setup.py py2app
    

    它工作得很好。希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      不要使用系统提供的py2app。运行它为我解决了这个问题:

      pip install --user --ignore-installed py2app
      

      (我通常对需要我禁用系统完整性保护的事情保持警惕)

      【讨论】:

      • 这是更好的解决方案。我不想禁用 SIP。这对我很有用。
      【解决方案4】:

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

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

      pip install hg+https://bitbucket.org/ronaldoussoren/py2app/
      

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

      【讨论】:

      • 编辑了我的答案以澄清。
      【解决方案5】:

      解决方案:使用-U 标志安装!

      既然大家都已经安装了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、Big Sur 上验证

      【讨论】:

      • 这个答案救了我的命。谢谢。
      【解决方案6】:

      我的 Mac 版本 Sierra 10.12 上出现了同样的错误。我的灵感来自@Nicholas Riley 的回答。

      我的问题的背景:

      • 使用 pandas 和 easygui 构建一个简单的应用程序
      • 在虚拟环境中工作
      • setup.py 已经通过运行$ py2applet --make-setup MyApplication.py 生成
      • py2app 已全局安装,但尚未安装在我的 virtualenv 中
      • virtualenv 未激活

      我的解决方案:

      激活虚拟环境

      Spievats-MacBook-Pro:EasyGuiTest user$ source bin/activate

      在虚拟环境中安装 py2app

      (EasyGuiTest) Spievats-MacBook-Pro:EasyGuiTest brady$ pip install py2app

      再次运行 py2app

      (EasyGuiTest) Spievats-MacBook-Pro:EasyGuiTest brady$ python setup.py py2app -A

      这很完美!我希望它可以帮助别人。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-03
        • 2021-02-10
        • 2021-01-01
        • 2014-11-01
        • 2014-06-30
        • 2012-03-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多