为什么我不应该将 virtualenv 推送到 Heroku?

Why shouldn't I push a virtualenv to Heroku?

在线教程告诉我将 venv 放入我的 .gitignore 文件中。为什么我不想推送我的虚拟环境,以便我或其他开发人员可以轻松地将项目拉到他们的本地并方便地拥有所有依赖项?

virtualenv is a tool to create isolated Python environments.

Heroku 为您提供一个环境,您可以使用 Heroku 为 Django 应用程序所需的 requirements.txt 安装您的包。

如果您想与其他开发人员共享这些依赖项,请使用另一个遥控器 github。并推送你的 requirements.txt

然后告诉您的开发人员使用此文件安装包。

例子

requirements.txt

Django==1.3
Fabric==1.2.0
Jinja2==2.5.5
PyYAML==3.09

一次性安装这些软件包:

pip install -r /path/to/requirements.txt

此外,当您 运行 本地计算机中的应用程序时,虚拟环境文件可能会更改,这将使推送到您的存储库的内容变得无用。

注意:如果您想知道您的虚拟环境中安装了哪些软件包,请使用 pip freeze

如果要将包导出到 requirements.txt,则 运行

pip freeze > requirements.txt

除了 Othman 所说的,virtualenvs 根本不可移植。试图移动它会破坏它,而且创建一个新环境比修复它更容易。因此,即使在使用虚拟环境的部署平台上,将它们签入 git 也不会奏效。