如何使Python和distutils在Mac OS X上使用正确的SDK?
我在MacOSX版本10.6上使用Python。我最近安装了最新的MacOSX开发者工具SDK,其中包含GCC。我拥有的SDK是:如何使Python和distutils在Mac OS X上使用正确的SDK?,python,macos,unix,gcc,distutils,Python,Macos,Unix,Gcc,Distutils,我在MacOSX版本10.6上使用Python。我最近安装了最新的MacOSX开发者工具SDK,其中包含GCC。我拥有的SDK是: $ ls /Developer/SDKs/ MacOSX10.4u.sdk MacOSX10.5.sdk MacOSX10.6.sdk 每当我安装需要编译的带有“setup.py install”的Python包时,我都希望将Mac OS X 10.6与Python/distutils一起使用 我注意到Python将-isysroot标志和路径传递给Mac OS
$ ls /Developer/SDKs/
MacOSX10.4u.sdk MacOSX10.5.sdk MacOSX10.6.sdk
每当我安装需要编译的带有“setup.py install”的Python包时,我都希望将Mac OS X 10.6与Python/distutils一起使用
我注意到Python将-isysroot标志和路径传递给Mac OS X 10.5(不是10.6),即:
我怎样才能纠正这个问题?我希望它改用10.6SDK
现在,当我在需要C编译的软件包上运行“python setup.py install”时,它会生成对GCC的调用,如下所示:
gcc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -DNDEBUG -g -O3 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.5.sdk -I/Library/Frameworks/EPD64.framework/Versions/7.0/include -DHAVE_RINTF=1 -DHAVE_FINITE=1 -DHAVE_EXPM1=1 -DHAVE_RINT=1 -DHAVE_LOG2=1 -DHAVE_LOGBL=1 -DHAVE_SNPRINTF=1 -DHAVE_LOG1P=1 -DHAVE_ROUND=1 -DHAVE_FMIN=1 -Iinclude -Isrc/lapack -Isrc/f2c -I/Library/Frameworks/EPD64.framework/Versions/7.0/include/python2.7 -c src/f2c/signal_.c -o build/temp.macosx-10.5-x86_64-2.7/src/f2c/signal_.o
在其路径中调用10.5个SDK
我使用Python的Enthound Python发行版安装,以防产生影响
非常感谢。这是一项功能,不会给您带来任何麻烦。Distutils故意这样做是为了确保构建的C扩展模块与构建使用中的Python解释器的方式相同。以这种方式构建的扩展是向上兼容的:它们也适用于10.6。如果您绝对想使用10.6 ABI功能,那么您应该使用使用10.6 SDK构建的Python,例如,从最近的Python.org 64位安装程序或MacPorts或Homebrew生成的Python。这是一项功能,不应该引起您任何担心。Distutils故意这样做是为了确保构建的C扩展模块与构建使用中的Python解释器的方式相同。以这种方式构建的扩展是向上兼容的:它们也适用于10.6。如果您绝对想使用10.6 ABI功能,您应该使用使用10.6 SDK构建的Python,例如,从最近的Python.org 64位安装程序或MacPorts或Homebrew生成的Python。我完全不同意@Ned Deily 海报显然使用了Enthound Python发行版(EPD),安装全新的Python需要安装全新的基础架构。 我也有同样的情况。在带有Mac Os X 10.6的MacBook上,项目(MeshPy)构建正确,但在带有Mac Os X 10.7的Imac上,项目(MeshPy)构建不正确(没有提供10.5 SDK,并且使用此SDK构建了EPD)。您可以尝试安装这个旧SDK,但是,一个更简单的黑客(希望它能工作)是制作一个符号链接:
sudo ln -sf MacOSX10.6.sdk MacOSX10.5.sdk
这对我很有效。我完全不同意@Ned Deily的观点 海报显然使用了Enthound Python发行版(EPD),安装全新的Python需要安装全新的基础架构。 我也有同样的情况。在带有Mac Os X 10.6的MacBook上,项目(MeshPy)构建正确,但在带有Mac Os X 10.7的Imac上,项目(MeshPy)构建不正确(没有提供10.5 SDK,并且使用此SDK构建了EPD)。您可以尝试安装这个旧SDK,但是,一个更简单的黑客(希望它能工作)是制作一个符号链接:
sudo ln -sf MacOSX10.6.sdk MacOSX10.5.sdk
这对我有用