2012-08-09 70 views
8

我正在使用virtualenv与团队开发django应用程序。我们正在部署的服务器正在运行python 2.6,但我们的机器的默认值是2.7.3。有没有什么方法可以在代码库中的requirements.txt文件或类似的东西中指定python版本?在Requirements.txt中为Virtualenv指定Python版本

我知道requirements.txt是一个点子,python版本是一个virtualenv的东西,但是真的很方便,不必告诉每个加入团队的新人如何设置他们的virtualenv。

+2

我不明白是什么激励你的问题。你的代码是为'2.6'还是'2.7'编写的?如果它不是为'2.6'编写的,那么它不会在你的服务器上工作,所以我不知道你想做什么:)。假设它是为'2.6'编写的,只是记录它是'2.6 +',创建venv时没有必要特别指定使用'2.6',如果有人使用'2.7',会出现什么错误? – Julian 2012-08-09 18:50:38

+1

该代码是为2.6编写的,因为服务器需要它。它应该被记录下来,但我想通过virtualenv强制执行2.6,然后告诉人们它是2.6+,并希望他们彻底阅读python文档。 – Arion 2012-08-09 21:21:29

+1

此问题已在这里得到解答:http://stackoverflow.com/a/33451105/1959808 – 2016-05-21 23:45:30

回答

4

pip和virtualenv都没有安装python(尽管pip tries)。他们使用你指定的任何东西

您可以编写一个自述文件,提到需要的Python版本或提供可部署到本地主机并在其中指定版本的fabric脚本。例如,instructions to install virtualenv, pip, distribute

对于那些不阅读指令的人,可能会有一个CI系统(jenkins,buildbot),它可以使用支持的Python版本(提交之前/之后)运行单元测试。

要管理多个python安装,你可以使用类似pythonz的东西。

2

这将是非常方便不是要告诉每一个新的人 加入这个团队如何建立自己的virtualenv

只需将它添加到正常的指令集,你给新成员时,加入;当你告诉他们关于内部文档wiki,wifi的密码和三明治配送店的电话号码时,你可以在同一个地方找到它。

这将是极不方便不必告诉人们,让他们自己搞清楚;他们第一次提交的东西只使用collections.Counter来发现它打破了构建,因为服务器没有2.7.x

+3

这是后备计划,但我更喜欢程序化问题的编程解决方案。 – Arion 2012-08-09 21:15:10

+0

我不确定这是否符合程序性问题;这只是文档/开机问题。 如果您*必须*,您可以添加一个检查到您的部署脚本/钩子验证Python版本;但那有什么意义呢?即使版本不匹配 - 您的代码仍可能运行。 您需要检查您的代码是否使用了2.7版本中引入的功能,对此我不了解自动方式。 – 2012-08-09 21:16:26

+1

“我不确定这是否属于程序性问题;这只是文档/入门问题。”通过这种逻辑,你不应该有一个requirements.txt,因为那时人们可能会认为它是一个库的最新版本,并且使用它实际使用的版本中不存在的库中的特征。除此之外,如果你没有单元测试(这会在你的例子中打破),那么你无论如何都在玩一个有风险的游戏。 – semicolon 2015-05-03 10:20:54

0

根据您的评论,这里唯一的问题应该是确保没有2.7-only代码它进入你的代码库。为此,我建议使用tox,并将其配置为创建一个2.6环境进行测试,以便当同事运行测试套件时,测试将在虚拟环境中运行。

相关问题