由于它不是任何正式规范/文档的一部分,并且如另一个答案所示,在某些情况下,
sysconfig/
distutils.sysconfig
.get_config_var()中没有设置适当的变量,
只有这样,才能可靠地得到它在所有情况下, 正是 作为构建会(例如,即使在sourcetree一个Python)是委托给的参考实现。
在中
distutils,为编译器设置库路径的逻辑位于中
distutils.commands.build_ext.finalize_options()。因此,此代码将在构建时获得任何副作用:
import distutils.command.build_ext #imports distutils.core, tood = 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.coreb.finalize_options()print b.library_dirs注意:
- 并非结果列表中的所有位置都必须存在。
- 如果您
setup.py
是setuptools
基于-的,则相应地使用setuptools.Distribution
和setuptools.command.build_ext
。 - 如果将任何值传递给
setup()
影响结果的值,则也必须将它们传递给Distribution
此处。
因为不能保证您需要传递的其他值的集合将保持不变,否则下一个维护者将不会切换到另一个构建器1;该值仅在构建扩展时才需要,
- 似乎 您根本不应该真正获得该值 :
- 如果您使用其他构建工具,则应该
build_ext
在构建过程中子类化并从基本方法中获取值。
- 如果您使用其他构建工具,则应该
1好吧,我承认这一特殊的可能性很小



