【问题标题】:Dependencies auto discovery for Python setuptools?Python setuptools的依赖项自动发现?
【发布时间】:2020-04-09 21:03:57
【问题描述】:

在使用 setuptools 打包 Python 应用程序时,我正在使用我的应用程序的所有 PyPI 依赖项填充 install_requires 列表。我发现自己手动梳理了所有资源以找到这些。这是正确的方法吗?还是可以以某种方式自动填充此列表?

【问题讨论】:

  • 您应该只列出install_requires 中的直接依赖项(而不是间接依赖项,即您的依赖项的依赖项),因此这应该是一个相对较短的列表,您可能应该手动整理此列表。当然可能有自动化的方法,我想我以前见过这样的工具,但我并没有真正看到重点,所以我没有使用它们,也记不起它们的名字。
  • 嗨 Sinoroc,很高兴知道我做得对,但是 - 好奇 - 为什么这个列表应该由手工而不是自动管理?我发现自己最初缺少直接依赖项,因为我错过了查看源文件。
  • 再想一想,如果有一个工具可以分析当前项目的代码,并告诉你环境中安装的哪些库是当前项目的直接依赖,那就太好了。这确实会有所帮助。到目前为止,我一直都是手工完成的,我使用tox,如果我错过了一个直接依赖项,它可能会告诉我,但如果install_requires 中有一个不必要的库,则不会说什么。
  • 我之前的评论中缺少:我将 toxlinting 工具(例如 pylint)结合使用,以便在某些 imports 无法解析,表示install_requires 中缺少某些库。
  • 也许看看pipreqs,在这里看到:stackoverflow.com/a/31684470/11138259

标签: python python-3.x setuptools


【解决方案1】:

在我看来install_requires 应该只列出你项目的直接 依赖项(而不是间接的依赖项,你的依赖项的依赖项)。因此,它通常是一个相对较短的列表,可能应该手动整理,就像您一开始就精心挑选图书馆一样。

在常见情况下,将toxpylintlinting 工具结合使用会通知您是否无法解析某些导入,这很可能意味着install_requires 中缺少库。

如果您已经有很多依赖项但忘记了哪些依赖项并且没有使install_requires 保持最新,那么我相信pipreqspigar 等工具可以提供帮助(可能有其他类似工具,但这是我在浏览以下类似问题时偶然发现的工具:12)。

【讨论】:

    猜你喜欢
    • 2017-02-12
    • 1970-01-01
    • 2014-10-02
    • 2013-04-09
    • 2011-09-12
    • 2010-11-18
    • 2016-06-01
    • 2014-06-28
    • 2013-08-30
    相关资源
    最近更新 更多