【问题标题】:Check if Python Package requires Visual Studio Build Tools检查 Python 包是否需要 Visual Studio 构建工具
【发布时间】:2019-05-27 19:09:35
【问题描述】:

来自this previous SO question,我了解到一些python包依赖Visual Studio Build Tools在Windows上从C编译源代码。

我想避免在我的开源项目中使用需要 Visual Studio 构建工具的 python 包。我不想强迫我的开源用户为我的 python 应用程序安装构建工具。这似乎大大降低了可用性并使其更难安装。

如何确定哪些开源 python 包需要 Visual Studio 构建工具?我检查了 pypi.org 和 libraries.io,并查看了每个包的 GitHub 中的 requirements.txt回购。我找不到任何对 Visual Studio 构建工具的要求,但是当我在包上尝试 pip install 时,它说它需要构建工具...

我确实从另一个 SO 帖子中找到了 this website of pre-compiled python libraries。假设此列表中的任何库都需要构建工具是否安全?但是,我假设此列表并不详尽。有更好的信息来源吗?

请注意,我不是在询问如何安装 Visual Studio 构建工具。提前感谢您的帮助!

【问题讨论】:

    标签: python dependencies build-tools


    【解决方案1】:

    我在 Reddit 上发布了这个并收到了以下答案,我认为这是正确的。如果需要,请随意添加另一个答案。

    基本上答案是包必须编译 C 代码才能构建的任何时候。查看包要求并不明显,因为安装工具提供的构建命令会自动在 Windows 上查找 Visual Studio。

    在 distutils 配置文件中,您可以设置您选择的编译器:https://docs.python.org/3/install/index.html#using-non-microsoft-compilers-on-windows。然后在通过 pip 安装时,您可以选择 --no-binary 选项以确保您不会获得 Visual Studio 预编译的二进制文件:https://pip.pypa.io/en/stable/reference/pip_install/#cmdoption-no-binary

    您可能还对 conda-forge 感兴趣,它提供了一种通过 conda 包管理器提供许多包二进制文件的开源方式:https://conda-forge.org/

    跟进是否有办法检测任意python包中编译器的使用:

    我假设很多包都会在它们的 setup.py 中的某个时候调用 distutils.core.Extension:https://docs.python.org/3/extending/building.html#building-c-and-c-extensions-with-distutils

    尽管 setup.py 允许您调用任意 Python 代码,因此实际的 C 编译可以隐藏在完全不同的地方,甚至使用完全不同的构建过程。

    基本上,如果许可或遵守 FOSS 原则对您的应用程序很重要,您要么需要将依赖链建立在其他人已经完成的工作(例如 conda-forge)上,要么您需要花时间真正调查每个人的状态您使用的依赖项:/

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 2019-07-14
      • 2011-02-01
      • 2011-03-28
      • 2014-08-20
      • 2010-10-21
      相关资源
      最近更新 更多