有没有理由不检查virtualenv环境以及python项目的源代码?

时间:2013-11-01 11:14:24

标签: python git virtualenv

我按照设置在Mac上使用Python的说明进行操作 (http://docs.python-guide.org/en/latest/starting/install/osx/

它建议将virtualenv创建的虚拟环境存储在项目目录中......这当然是一个git repo。

有没有理由将virtualenv添加到git repo?这似乎很自然,但是......

3 个答案:

答案 0 :(得分:9)

始终尝试检入,而不是运行流程的结果。

virtualenv是特定于平台的; Windows virtualenv可能需要不同于Linux上创建的二进制文件。脚本文件中的路径几乎肯定会使用绝对路径,而不是相对路径,将virtualenv绑定到硬盘上的特定位置。

相反,请查看有关如何重新创建virtualenv的说明。添加命令,并使用pipzc.buildoutPipenv等工具让其他人为其平台重新创建正确的环境

pip允许您使用requirements.txt文件将软件包安装到virtualenv中。你提交那个文件。 zc.buildout允许您在.cfg个文件中定义复杂的构建配置。承诺那些。 Pipenv跟踪Pipfile中的顶级依赖项,并为完全可重现的环境创建Pipenv.lock文件,检入这两个文件等。

答案 1 :(得分:4)

哲学上,virtualenv不是源代码,它是一堆可重现的工件。不应该检查它,最多应该检查一个脚本来更容易地重新创建它。

实际上,即使在一个系统中也无法移动virtualenv(在不破坏东西的情况下无法移动它),更不用说具有相同通用设置的不同系统(二进制路径和ABI可能不同),更不用说不同了操作系统(我真的要解释这个吗?)。因此,几乎在每种情况下都要在实际成本中进行检查(因为在克隆存储库后无法使用它)。

答案 2 :(得分:2)

只需在requirements.txt文件中描述项目的依赖关系,并将该版本保存在git下以及项目代码等。之后很容易重新创建环境:只需运行pip install -r requirements.txt。这是管理项目依赖关系的一种非常简洁明了的方法。

不将环境本身保留在回购中的一个原因是它会显着增加回购的大小,随着时间的推移会使你的git repo变慢(特别是克隆它)。

当然还有很多其他原因......