我下面的设立与Python来工作的指示在Mac (http://docs.python-guide.org/en/latest/starting/install/osx/)是否有理由不检查virtualenv环境以及python项目的源代码?
这表明以存储的virtualenv在项目目录中创建虚拟环境......这当然是一个混帐回购协议。
是否有任何理由不是将virtualenv添加到git repo?这似乎是自然而然的事情,但...
我下面的设立与Python来工作的指示在Mac (http://docs.python-guide.org/en/latest/starting/install/osx/)是否有理由不检查virtualenv环境以及python项目的源代码?
这表明以存储的virtualenv在项目目录中创建虚拟环境......这当然是一个混帐回购协议。
是否有任何理由不是将virtualenv添加到git repo?这似乎是自然而然的事情,但...
总是尝试检查来源,而不是运行一个进程的结果。
virtualenv是相当具体的平台; Windows virtualenv可能需要与Linux上创建的不同的二进制文件。脚本文件中的路径几乎肯定会使用绝对路径,而不是相对路径将virtualenv绑定到硬盘上的特定位置。
请改为检查如何重新创建virtualenv的说明。包括命令,并使用诸如pip
或zc.buildout
之类的工具让其他人为其平台重新创建合适的环境。
pip
允许您将软件包安装到带有requirements.txt
文件的virtualenv中。你会承诺即文件。 zc.buildout
可让您在.cfg
文件中定义复杂的构建配置。提交这些。
从哲学上讲,virtualenv不是源代码,它是一些可重现的工件。它不应该签入,至多一个脚本,更容易重新创建它应该签入。
实际上,即使在一个单一的系统内的virtualenv是完全不可移植的(不能移动它不破坏的东西) ,但是在不同的系统中使用相同的通用设置(二进制路径和ABI可能不同),更不用说不同的操作系统了(我是否真的必须解释这一点?)。因此,实际上检查它在中几乎在每种情况下都需要花费(因为在克隆存储库后无法使用它)。
只需在requirements.txt
文件中描述该项目的依赖关系,并将该版本与项目代码等一起保存在git中。以后很容易重新创建环境:只需运行pip install -r requirements.txt
即可。这是管理项目依赖关系的一种非常简洁明了的方式。
一个理由不保持环境本身在回购是,它会显著增加了回购的规模,它随着时间的推移将与您的git回购慢(尤其是克隆它)的工作。
还有许多其他的原因,当然...
我相信virtualenvs通常依赖于绝对pathes。 – wmeyer
它建议将virtualenv存储在项目目录中的位置?我没有看到这样的建议,这是一件好事,因为即使是最beign解释(在同一目录中'.git'目录中的virtualenv,但不检查它)是更多的麻烦比它的价值。 – delnan
这事实上是很难理解的句子,与结束“运行在项目的目录中的virtualenv工具”。我现在可以看到,我可能误解了这整个句子:(但是我从这个问题的答案中学到了很多东西:)但是,如果在项目目录中运行此语句后的命令,则会结束与虚拟env在回购... – GreenAsJade