繁体   English   中英

如何使Python和distutils在Mac OS X上使用正确的SDK?

[英]How to make Python and distutils use the right SDK on Mac OS X?

我在Mac OS X 10.6版上使用Python。 我最近安装了最新的Mac OS X开发人员工具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 X 10.5 (不是10.6),即:

$ python-config --cflags --ldflags
-I/Library/Frameworks/EPD64.framework/Versions/7.0/include/python2.7 -I/Library/Frameworks/EPD64.framework/Versions/7.0/include/python2.7 -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
-L/Library/Frameworks/EPD64.framework/Versions/7.0/lib/python2.7/config -ldl -framework CoreFoundation -lpython2.7 EPD64.framework/Versions/7.0/Python

我该如何纠正? 我希望它改用10.6 SDK。

现在,当我在需要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的Enthought Python Distribution安装,以防万一。

非常感谢。

这是一项功能,不会给您带来任何麻烦。 Distutils故意这样做,以确保您构建的C扩展模块的构建方式与所使用的Python解释器的构建方式相同。 以这种方式构建的扩展是向上兼容的:它们也将在10.6上运行。 如果您绝对要使用10.6 ABI功能,则应使用通过10.6 SDK构建的Python,例如,它是从最新的python.org 64位安装程序,MacPorts或Homebrew中构建的。

我完全不同意@Ned Deily

张贴者显然使用了Enthought Python发行版(EPD),并且要安装整个新Python,就需要安装整个新基础设施。 我有同样的情况。 在装有Mac Os X 10.6的MacBook上,项目(MeshPy)可以正确构建,但是在装有Mac Os X 10.7的Imac上,则不能正确构建(未提供10.5 SDK,并且已构建了此SDK EPD)。 您可以尝试安装此旧的SDK,但是,进行符号链接的方法要简单得多(希望它能起作用):

    sudo ln -sf MacOSX10.6.sdk MacOSX10.5.sdk

它为我工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM