首页 > 解决方案 > 在 macOS 11.0 Big Sur 上安装 Pyobjc 时出错

问题描述

尝试在 Big Sur 的虚拟环境中安装pyobjc库时出现错误。安装错误,声称它“无法确定 SDK 版本”。我做了一些挖掘,看起来这个错误是由这个流中的异常触发的。

这是错误的开始:

Building wheel for pyobjc-core (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /Users/me/Desktop/Projects/env/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/tmp/pip-install-qixc6c89/pyobjc-core/setup.py'"'"'; __file__='"'"'/private/tmp/pip-install-qixc6c89/pyobjc-core/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /private/tmp/pip-wheel-c0phpdjv
       cwd: /private/tmp/pip-install-qixc6c89/pyobjc-core/

这是错误的结尾:

    copying PyObjCTest/test_specialtypecodes_methdef.py -> build/lib.macosx-11.0-x86_64-3.9/PyObjCTest
    running build_ext
    Cannot determine SDK version
    ----------------------------------------
ERROR: Command errored out with exit status 1: /Users/me/Desktop/Projects/env/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/tmp/pip-install-qixc6c89/pyobjc-core/setup.py'"'"'; __file__='"'"'/private/tmp/pip-install-qixc6c89/pyobjc-core/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /private/tmp/pip-record-l_v97344/install-record.txt --single-version-externally-managed --compile --install-headers /Users/me/Desktop/Projects/env/include/site/python3.9/pyobjc-core Check the logs for full command output.

我尝试重新安装 Xcode 开发人员工具无济于事,因为我认为这可能会刷新 SDK 引用。任何帮助将非常感激。

标签: pythonpython-3.xmacospippyobjc

解决方案


我相信这个问题现在应该已经解决了。因此,运行pip install pyobjc应该会按预期再次运行(针对 pyobjc- 7.0.1和 python 3.9.0进行了测试)。

如果没有,您可以为当前会话临时设置 SDK 并使用以下命令从头开始构建它:

SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk pip wheel pyobjc-core

(如果它不起作用,请检查您安装了哪些 SDK。它适用于我MacOSX10.15,只需运行ls /Library/Developer/CommandLineTools/SDKs/并查看可用的。您需要 Xcode CLI 工具。)然后pip install pyobjc再次运行以安装 pyobjc 的其余部分。

对于某些框架插件,您可能必须专门设置 cflags:

SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk \
    CFLAGS="-isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk" \
    pip wheel pyobjc-framework-cocoa

同样,只需MacOSX10.14.sdk在您的系统上使用 10.X SDK 进行切换。

有更多关于这个相关 GitHub 问题的信息,我无耻地从@hoefling偷了这个解决方案,所以 <3


推荐阅读