模块编译2.7.7和2.7.8之间的差异

时间:2015-02-10 21:30:35

标签: python python-2.7 osx-yosemite

自从我升级到Yosemite以来,我遇到了编译(某些)模块(特别是使用C扩展的模块,即:Cython)的问题。

我问了一个相关问题here,最终结果是this github issue和我使用的虚拟环境管理器。然而,从那时起,所述管理器的创建者{3}导致Python传递给C编译器的标志发生了一些变化。

我将总结观察到的变化。在Python 2.7.7及更早版本中,可以在OSX Yosemite上观察到以下内容:

python -c 'import sysconfig;print(sysconfig.get_config_var("BLDSHARED"))'
clang -bundle -bundle_loader python.exe -L/usr/local/opt/readline/lib -L/usr/local/opt/readline/lib -L/Users/yyuu/.pyenv/versions/2.7.7/lib

在2.7.8及更高版本中,可以观察到

python -c 'import sysconfig;print(sysconfig.get_config_var("BLDSHARED"))'
clang -bundle -undefined dynamic_lookup -L/usr/local/opt/readline/lib -L/usr/local/opt/readline/lib -L/Users/yyuu/.pyenv/versions/2.7.8/lib

我已经测试了这个独立的virtualenv经理。考虑到我尝试安装带有C扩展名的包时出现错误消息,问题非常清楚:

ld: file not found: python.exe

所以现在我的问题是:我没有太多期望/想要'修复',而是了解导致这种变化的原因。 Python用什么来确定输出?什么是BLDSHARED派生自?如果我理解这一点,那么也许我可以设计一个解决方案。我想这与Python如何检测它正在构建的环境有关。

当然也可以接受修复,而不是更好的理解:)

0 个答案:

没有答案
相关问题