Python Distutils编译器选项配置

Python Distutils编译器选项配置,python,python-2.7,distutils,enthought,Python,Python 2.7,Distutils,Enthought,也许是个愚蠢的问题,但我想知道Python的distutils从哪里获得编译器选项?它得到一些链接目录错误,我想纠正这一点一劳永逸 我知道应该有一个前缀/lib/pythonver/distutils/distutils.cfg,但我在计算机上的任何地方都找不到distutils.cfg。显然,我没有本地setup.cfg或任何$HOME/.pydistutils.cfg 我在MacOSX10.8.3上使用的是Enthough 64位发行版7.3版(Python 2.7) 干杯, U.我实际上将

也许是个愚蠢的问题,但我想知道Python的distutils从哪里获得编译器选项?它得到一些链接目录错误,我想纠正这一点一劳永逸

我知道应该有一个前缀/lib/pythonver/distutils/distutils.cfg,但我在计算机上的任何地方都找不到distutils.cfg。显然,我没有本地setup.cfg或任何$HOME/.pydistutils.cfg

我在MacOSX10.8.3上使用的是Enthough 64位发行版7.3版(Python 2.7)

干杯,
U.

我实际上将它们导出到环境中,就像autotools的配置一样:

export CC=/usr/local/bin/clang
export CFLAGS=-I${HOME}/include
export LDFLAGS=-lboost
如果还需要单独覆盖链接器:

export LDSHARED=/usr/local/bin/clang -shared
如果您不喜欢将设置导出到您的环境中,请对一次性设置执行以下操作:

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

如果您想了解构建python时的默认选项是什么,请使用
python配置--
。一些标志是
cflags
ldflags
libs
includes
,编译器选项取自CPython的Makefile。看起来,它们与用于编译Python的相同。如Evert所述,您可以在命令行上覆盖其中的大部分


global distutils.cfg是系统管理员可以创建用来设置默认选项的文件,而不是Python安装的文件。

好的,它可以设置变量,但是现在还没有设置,那么distutils从哪里获得这些变量呢?我在python文件中没有发现任何提示,表明distutils会在其他地方读取它;如果没有配置文件(您说它不在那里),编译器标志实际上遵循原始的configure/make标志,因此也可以通过
python config--cflags
等看到。啊,它们在那里!因为我没有编译Python,但是使用了EPD发行版,所以我想我不会使用Makefile。但现在我知道该去哪里找,该做什么了。干杯终于有了足够的时间来尝试上面的方法,而且效果不错。我将正确的路径和选项以
export CFGLAGS='…选项和路径加载…'
的形式包含到.bashrc中。然而,distutils现在获得两组标志,其中一些标志相互矛盾,例如-O3和-O2。程序编译得很好,不过…@Mulle:如果我没有弄错的话,对于
-L
-I
选项,它们是按外观顺序解释的。因此,如果您的本地include目录是在默认目录之前指定的(我认为在使用
CFLAGS和
LDFLAGS
时会发生这种情况),那么您的本地include文件将首先被提取。但是,对于
-O`选项,
gcc
手册页面上说:“如果您使用多个-O选项,无论有无级别编号,最后一个选项都是有效的。”。如果这不适合您,您可以使用
-fno-…
选项关闭优化。