CPython安装会记住CC位置吗?

时间:2018-10-03 09:55:05

标签: python-3.x bazel distutils cpython

我有一个自定义版本的cpython 3.6.6,它是通过自定义安装的clang 6.0构建的。这些文件都不在文件系统上的固定,可预测的绝对路径中。结果,在cpython构建时,CC环境变量(以及CXXLD_LIBRARY_PATH等)是从某些特定工作到clang的 relative 路径。目录,类似export CC=relative/path/to/clang *。

似乎python distutils记住了CC环境变量的这个值。也就是说,我可以使用内置的python进入REPL会话并执行以下操作

$ echo $CC
/some/system/gcc
$ path/to/python3
Python 3.6.6 (default, Oct  3 2018, 10:19:41) 
[GCC 4.2.1 Compatible Clang 6.0.0 (tags/RELEASE_600/final)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from distutils import sysconfig
>>> sysconfig.get_config_var('CC')
'relative/path/to/clang-6.0 -pthread'

所以我的问题是:我可以阻止distutils记住在构建时使用的CC吗?我可以确保在运行CC时正确设置distutils


要应对明显的解决方案:CC=new/relative/path/to/clang python3 -m distutils ...不能解决问题吗?不会。至少,似乎不是在使用pip安装需要C编译器的东西时。如果我在某个时候使用CC=new/relative/path/to/clang python3 -m pip ...,它将尝试使用CC从安装时起就已经记住的distutils。我无法确切指出pipsetuptools中的哪一个,或此处有其他错误。

*这本质上是因为我正在使用bazel来协调所有这些,但是要解释详细信息会使我离这个问题太远了。

0 个答案:

没有答案