获取Python的LIB路径

时间:2017-11-21 21:43:42

标签: python python-c-api compiler-options

我可以看到INCLUDE路径为sysconfig.get_path('include')

但我没有看到LIB的任何类似价值。

NumPy outright hardcodes it在Windows中为os.path.join(sys.prefix, "libs")get_config_var('LIBDIR')(在Windows中未记录和丢失)。

是否有更受支持的方式?

1 个答案:

答案 0 :(得分:1)

由于它不是任何官方规范/文档的一部分,并且as shown by another回答,有些情况下sysconfig / distutils.sysconfig {{没有适当的变量1}}已设置,

在所有情况下可靠地获取它的唯一方法,完全作为构建(例如,即使对于sourcetree中的Python)也是委托给参考实现。

.get_config_var()中,为编译器is located in distutils.commands.build_ext.finalize_options()设置库路径的逻辑。因此,这段代码可以在构建时没有副作用:

distutils

请注意:

  • 并非结果列表中的所有位置都必须存在。
  • 如果您的import distutils.command.build_ext #imports distutils.core, too d = distutils.core.Distribution() b = distutils.command.build_ext.build_ext(d) #or `d.get_command_class('build_ext')(d)', # then it's enough to import distutils.core b.finalize_options() print b.library_dirs 基于setup.py,请相应地使用setuptoolssetuptools.Distribution
  • 如果您将任何影响结果的值传递给setuptools.command.build_ext,那么您也必须将它们传递给setup()

由于无法保证您需要传递的附加值集合保持不变,或者下一个维护者不能切换到另一个构建器 1 ;并且只有在构建扩展时才需要该值,

  • 似乎你并不是真的应该在所有中独立获得这个价值:
    • 如果您正在使用其他构建工具,则应该更好地继承Distribution并在构建期间从基本方法获取值。

1 好的,我承认这个特殊的可能性很小