python-config的替代品,可以在Python中调用

时间:2015-02-23 13:29:58

标签: python introspection cpython compiler-flags python-c-extension

我想让Python脚本为运行脚本的Python解释器的任何版本构建Python C扩展模块。

为此,我想动态获取相关的C编译器标志 - 实现此目的的一种方法是获取python-config CLI工具的输出,例如:像这样:

subprocess.check_output(["python-config", "--includes"])

不幸的是,在安装了多个Python版本的系统上,此方法可能找不到正确的python-config - 也就是说,与当前运行的Python版本相关联的python-config。 (另外,从方法论上来说,这有点难看。)

我是否有某种方式可以从Python中获取此信息 - 或许像Numpy的get_include

1 个答案:

答案 0 :(得分:1)

我有答案:它是内置的sysconfig模块。 the sysconfig module

...提供访问python-config提供的相同信息的方法,包括但不限于:

  • get_python_version()(按照您的想法行事),
  • get_paths()(产生带有许多有用路径的dict),
  • get_config_var()get_config_vars()(分别返回字符串和巨大的dict来筛选所有低级配置选项),
  • get_config_h_filename()(产生源config.h文件),
  • parse_config_h()(仅适用于最勇敢的配置管道工)

......对于任何寻求python-config价值而不必经历令人尴尬的subprocess舞蹈来获得它的人来说,前两个可能就足够了。