获取Python的LIB路径

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

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

NumPy outright hardcodes it作为Windows中的os.path.join(sys.prefix,“libs”)和get_config_var(‘LIBDIR’)(在Windows中没有记录和丢失),否则.

是否有更受支持的方式?

最佳答案
由于它不是任何官方规范/ doc的一部分,并且,as shown by another回答,有时没有设置sysconfig / distutils.sysconfig .get_config_var()中的适当变量,

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

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

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是基于setuptools的,请相应地使用setuptools.Distribution和setuptools.command.build_ext.
>如果您将任何值传递给影响结果的setup(),您也必须将它们传递给Distribution.

由于无法保证您需要传递的附加值集将保持不变,或者下一个维护者不会切换到另一个builder1;并且仅在构建扩展时需要该值,

>看起来你根本不应该独立获得这个价值:

>如果您正在使用另一个构建工具,则应该在构建期间继承子类build_ext并从base方法获取值.

1Okay,我承认这个特别的是一个相当遥远的可能性

转载注明原文:获取Python的LIB路径 - 代码日志