在macOS 11.0 Big Sur上安装Pyobjc时出现错误

3
我在 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引用。非常感谢您的任何帮助。

  • 尝试安装pyobjc版本 7.0
  • Python版本:3.9.03.8.2(在两个版本上都尝试过,但都不起作用)

这个回答解决了你的问题吗?Big Sur clang "invalid version" error due to MACOSX_DEPLOYMENT_TARGET - undefined
@Felipe 我不这么认为。我运行了 `clang --version',得到的输出与你说的完全一样(版本号为12.0.0等)。唯一的区别是,在我的SDK目录中,我有三个条目而不是两个:_MacOSX.sdk_,_MacOSX10.15.sdk_和_MacOSX11.0.sdk_。然而,_MacOSX.sdk_只是一个指向 MacOSX11.0.sdk 的别名。 - undefined
3个回答

1
我相信问题现在应该已经解决了。因此运行 pip install pyobjc 应该像预期的那样再次正常工作(已测试 pyobjc-7.0.1 和 python3.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

再次,只需在您的系统上使用一个10.X SDK,将MacOSX10.14.sdk替换即可。

有关更多信息,请参见此相关GitHub问题,我从@hoefling在s.o.上无耻地窃取了此解决方案。 <3


是的,刚刚运行了pip install pyobjc,一切都顺利进行。 - undefined

0
我也遇到了这个问题,通过删除符号链接和除了11.0之外的所有SDK,我成功解决了它。对于系统稳定性或其他软件,我不完全确定这样做会有什么影响,但是pip install pyobjc确实完成了。
我并不自称是MacOS开发的专家,所以结果可能因人而异。

我对尝试这个有些犹豫,因为正如你所指出的,我不知道移除其他SDK或符号链接可能会产生什么副作用。 - undefined

0

PyObjC 应该使用二进制轮子(无需编译)来安装。如果不能成功安装,请在 GitHub 上报告问题,并提供有关您的 Python 安装的信息(例如,Python 是如何安装的)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接