Skip to main content
 首页 » 编程设计

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

2025年05月04日24Renyi-Fan

我在 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。