【问题标题】:Does Python requirements file have to specify version?Python 需求文件是否必须指定版本?
【发布时间】:2019-07-29 20:23:41
【问题描述】:

我有一个 Python 代码库的 requirements.txt 文件。该文件已指定所有内容:

pytz==2017.2
requests==2.18.4
six==1.11.0

我正在添加一个新包。我应该列出它的版本吗?如果是,如何选择要指定的版本?

【问题讨论】:

  • 您使用的是虚拟环境吗?
  • 您碰巧偶然发现了 Python 中的一场有争议的辩论。不,你没有必须您应该取决于您的应用程序。你能描述一下你想要做什么吗?
  • @Tom Mac 是的,但出于好奇,你为什么要问?
  • @pylang 我只是想知道,我尝试遵循最佳实践。该应用程序是制造自动化 - 在本例中是用 Python 编写的驱动程序。
  • @Intrastellar Explorer 我打算在你冻结你的需求之前使用一个,但你已经排序了

标签: python requirements.txt


【解决方案1】:

查看pip docs 了解更多信息,但基本上您不需要指定版本。这样做可以避免头疼,因为指定一个版本可以保证你不会最终陷入依赖地狱。

请注意,如果您正在创建要部署和 pip 安装的包,则应使用 install-requires metadata 而不是依赖 requirements.txt。

此外,养成使用虚拟环境的习惯以避免依赖性问题也是一个好主意,尤其是在开发自己的东西时。 Anaconda 使用 conda create 命令提供了一个简单的解决方案,virtualenvvirtualenvwrapper 配合使用以获得更轻量级的解决方案。另一个解决方案pipenv 很受欢迎。

【讨论】:

    【解决方案2】:

    指定版本不是必需的,尽管它在未来确实有很大帮助。某些版本的软件包不能很好地与其他软件包及其各自的版本一起使用。很难预测未来的变化将如何影响这些相互关系。这就是为什么及时创建快照(在您的 requirements.txt 中)显示哪些版本相互关系有效的原因。

    要创建包含您正在使用的软件包版本的 requirements.txt 文件,请执行以下操作。在您的控制台/终端 cd 进入您希望您的 requirements.txt 所在的位置并输入:

    pip freeze > requirements.txt
    

    这将自动生成一个 requirements.txt 文件,其中包括您已安装的软件包及其各自的版本。

    提示 - 您的目标应该是为您将从事的每个单独项目使用虚拟环境。这为您创建了一个“气泡”,您可以在其中工作并安装特定的软件包版本,而不会影响您的其他项目。由于您的包和版本将保持项目特定,它将在未来为您省去很多麻烦。我建议使用Anacondas virtual environment

    【讨论】:

    • 喜欢这个答案,我不知道如何检查我目前拥有的所有版本。谢谢
    • 很高兴它帮助了@DenysFiialko!如果您不想制作文本文件,您也可以在您的 cosnole/ 终端中输入“pip freeze”(无需输入“> requirements.txt”)以列出您的软件包版本
    【解决方案3】:

    不,不需要指定版本。不过,指定一个可能是个好主意。

    如果您想指定版本但不知道要指定哪个版本,请尝试使用pip freeze,它将显示您当前已安装的所有软件包及其版本的列表。

    【讨论】:

      猜你喜欢
      • 2020-10-01
      • 1970-01-01
      • 2014-10-19
      • 2018-11-05
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多