为 Python 虚拟环境管理 requirements.txt 的内容

Managing contents of requirements.txt for a Python virtual environment

所以我正在从头开始创建一个全新的 Flask 应用程序。正如所有优秀的开发人员所做的那样,我的第一步是创建一个虚拟环境。

我在虚拟环境中安装的第一个东西是Flask==0.11.1。 Flask 安装其以下依赖项:

  • click==6.6
  • itsdangerous==0.24
  • Jinja2==2.8
  • MarkupSafe==0.23
  • Werkzeug==0.11.11
  • wheel==0.24.0

现在,我创建一个 requirements.txt 以确保每个克隆存储库的人都拥有相同版本的库。然而,我的困境是:

您可以(从您的活动虚拟环境)执行以下操作

pip freeze > requirements.txt

它会自动处理您项目中所有可用的 libraries/modules。

下一个开发者只需发布:

pip install -r requirements.txt

这两种方法都有效且有效。但是有一点不同。当您在 requirements.txt 中输入所有依赖项时,您将能够固定它们的版本。如果您将它们排除在外,可能会有稍后的更新,并且如果 Flask 在其依赖项中有类似 Werkzeug>=0.11 的内容,您将安装更新版本的 Werkzeug。

因此归结为更新与定义的环境。哪个更适合你。

一件好事是您正在使用 virtualenv,这将使您的任务变得非常简单。

  1. 激活 virtualenv ($source path_to_virtualenv/bin/activate)

  2. 进入你的项目根目录

  3. 获取requirements.txt

    中的所有包和依赖项
    pip freeze > requirements.txt
    
  4. 除了确保下一个人通过以下命令递归安装要求外,您不必担心其他任何事情

    pip install -r requirements.txt
    

如果您只想查看已安装的软件包,那么只需执行
pip freeze

但是如果您想要在 requirement.txt 中包含所有这些包,那么请执行
pip freeze > requirements.txt