Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使Python和distutils在Mac OS X上使用正确的SDK?_Python_Macos_Unix_Gcc_Distutils - Fatal编程技术网

如何使Python和distutils在Mac OS X上使用正确的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

我在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 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
这对我有用