获取Python的LIB路径

发布于 2021-01-29 14:56:43

我看到那INCLUDE条路是sysconfig.get_path('include')

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

NumPy直接os.path.join(sys.prefix, "libs")Windows中那样对其进行硬编码,否则(在Windows中get_config_var('LIBDIR')没有记录和丢失)。

还有更多受支持的方法吗?

关注者
0
被浏览
130
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    由于它不是任何正式规范/文档的一部分,并且如另一个答案所示,在某些情况下,sysconfig/distutils.sysconfig
    .get_config_var()中没有设置适当的变量,

    只有这样,才能可靠地得到它在所有情况下, 正是 作为构建会(例如,即使在sourcetree一个Python)是委托给的参考实现。

    在中distutils,为编译器设置库路径的逻辑位于中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.pysetuptools基于-的,则相应地使用setuptools.Distributionsetuptools.command.build_ext
    • 如果将任何值传递给setup()影响结果的值,则也必须将它们传递给Distribution此处。

    因为不能保证您需要传递的其他值的集合将保持不变,否则下一个维护者将不会切换到另一个构建器1;该值仅在构建扩展时才需要,

    • 似乎 您根本不应该真正获得该值
      • 如果您使用其他构建工具,则应该build_ext在构建过程中子类化并从基本方法中获取值。

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看