Python 在macOS 11.0 Big Sur上安装Pyobjc时出错
我在Big Sur的虚拟环境中安装库时出错。安装错误声明它“无法确定SDK版本”。我已经做了一些挖掘,看起来这个错误是由中的异常触发的 以下是错误的开始:Python 在macOS 11.0 Big Sur上安装Pyobjc时出错,python,python-3.x,macos,pip,pyobjc,Python,Python 3.x,Macos,Pip,Pyobjc,我在Big Sur的虚拟环境中安装库时出错。安装错误声明它“无法确定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 sy
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.
下面是错误的结尾:
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.0,3.8.2(在两种工作上都试用过,但都没有试用过)
/Library/Developer/CommandLineTools/sdk
中删除符号链接和11.0以外的所有SDK,成功地解决了这个问题。不完全确定这对系统稳定性或其他软件有什么影响,但实际完成的是pip安装pyobjc
我并不自称是MacOS开发专家,所以YMMV。我认为这个问题现在应该解决了。因此,运行
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/
,然后查看可用的SDK。您需要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框架
同样,只需在系统上使用10.X sdk切换MacOSX10.14.sdk
还有更多的信息,我无耻地从s.o.上窃取了这个解决方案。PyObjC应该使用二进制轮子安装(无需编译)。如果没有,请在GitHub中提交一个问题,并包括有关Python安装的信息(例如Python是如何安装的)。这是否回答了您的问题@菲利佩,我不这么认为。我运行了'clang--version',得到了与您所说的对您有用的完全相同的输出(版本12.0.0等)。对我来说,一个不同之处是,在我的sdk目录中,我有三个条目,而不是两个:MacOSX.sdk、MacOSX10.15.sdk和MacOSX11.0.sdk。MacOSX.sdk只是一个重定向到MacOSX11.0.sdk的别名。我不太愿意尝试,因为正如您所指出的,我不知道删除其他sdk/symlink可能会有什么副作用。是的,只是运行了
pip install pyobjc
,并且没有任何问题