Distutils编译器选项配置

7
也许这是一个愚蠢的问题,但我想知道Python的distutils从哪里获取编译器选项?它将一些链接目录弄错了,我想彻底纠正这个问题。
我知道应该有prefix/lib/pythonver/distutils/distutils.cfg,但是我找不到任何地方的distutils.cfg。很明显,我没有本地的setup.cfg或任何$HOME/.pydistutils.cfg。
我正在使用Enthought 64位发行版,版本7.3(Python 2.7),在Mac OS X 10.8.3上运行。
谢谢, U.
2个回答

7

我实际上将它们导出到环境中,就像为自动工具的配置一样:

export CC=/usr/local/bin/clang
export CFLAGS=-I${HOME}/include
export LDFLAGS=-lboost

如果您需要单独覆盖链接器:
export LDSHARED=/usr/local/bin/clang -shared

如果你不喜欢将设置导出到环境中,那么可以使用以下方法进行一次性设置:

如果您不喜欢将设置导出到环境变量中,请使用以下方法进行一次性设置:

export
CC=/usr/local/bin/clang CFLAGS=-I${HOME}/include python setup.py build

如果你想了解 Python 构建时的默认选项,可以使用 python-config --<flag> 命令。一些标识包括 cflagsldflagslibsincludes


好的,那样就可以设置变量了,但现在它们还没有被设置,那么distutils从哪里获取它们呢?我并没有在Python文件中找到任何提示,表明distutils会从其他地方读取这些变量。 - Mulle
请参考Eric的回答;如果没有配置文件(你说它不存在),编译器标志确实遵循原始的configure/make标志,因此也可以通过python-config --cflags等命令查看。 - user707650
啊,它们在这里!由于我没有编译 Python 而是采用了 EPD 发行版,我想我不会有 Makefile。但现在我知道该去哪里看以及该做什么了。干杯! - Mulle
请参考这个问题 - user707650
在我的系统上,默认值存储在/usr/lib/python3.7/_sysconfigdata_m_linux_x86_64-linux-gnu.py中。实际上,python-config --cflags是原始的CFLAGS + python-config --includes。因此,理想情况下,我需要从_sysconfigdata_文件中获取CFLAGS,添加自定义选项,并将所有内容传递给distuilsCFLAGS=... pip install ...)。难道没有更简单的方法(从用户的角度来看)? - x-yuri
显示剩余4条评论

3

编译器选项取自CPython的Makefile,也就是和Python编译时使用的选项一致。您可以像Evert所描述的那样在命令行上覆盖它们中的大部分。

全局的distutils.cfg是系统管理员可以创建的东西,用于设置默认选项,而不是随Python一起安装的文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接