在Requirements.txt中指定Virtualenv的Python版本

在Requirements.txt中指定Virtualenv的Python版本,python,virtualenv,pip,Python,Virtualenv,Pip,我正在使用virtualenv与团队一起开发django应用程序。我们部署的服务器运行的是Python2.6,但是我们机器的默认值是2.7.3。有没有办法在requirements.txt文件中指定python版本,或者在代码库中指定类似的内容 我知道requirements.txt是一个pip的东西,python版本是一个virtualenv的东西,但是不必告诉每个新加入团队的人如何设置他们的virtualenv是非常方便的。尽管pip和virtualenv都不安装python。他们使用你指定

我正在使用virtualenv与团队一起开发django应用程序。我们部署的服务器运行的是Python2.6,但是我们机器的默认值是2.7.3。有没有办法在requirements.txt文件中指定python版本,或者在代码库中指定类似的内容


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

尽管pip和virtualenv都不安装python。他们使用你指定的任何东西

您可以编写一个自述文件,其中提到所需的Python版本,或者提供一个可以部署到localhost并在其中指定版本的脚本。例如

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

要管理多个python安装,您可以使用以下内容

不必告诉每一个新人,这真的很方便 加入团队如何设置他们的virtualenv

只需将其添加到加入时您给新成员的常规指令集中;当你告诉他们关于内部文档wiki、wifi密码和三明治送货店的电话号码时,也在同一个地方


如果不告诉人们,让他们自己去想,那将是非常不方便的;当他们第一次提交使用
集合的东西时,计数器
只会发现它破坏了构建,因为根据您的评论,服务器没有2.7.x

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

您还可以通过以下命令指定默认Python:

sudo update-alternatives  --set python /usr/bin/python3.7

我不明白是什么激发了你的问题。您的代码是为
2.6
还是
2.7
编写的?如果它不是为
2.6
编写的,它显然无法在您的服务器上工作,因此我不知道您想做什么:)。假设它是为
2.6
编写的,只需记录它是
2.6+
,并且在创建venv时不需要特别指定使用
2.6
,如果有人使用
2.7
,会有什么问题?因为服务器需要它,所以代码是为2.6编写的。它应该被记录下来,但我想通过virtualenv强制执行2.6,然后告诉人们它是2.6+,希望他们彻底阅读python文档。这个问题已经在这里得到了回答:这可能是备用计划的重复,但我更喜欢程序化的解决方案,而不是程序化的问题;这只是文件/登机问题。如果必须,可以向部署脚本/钩子中添加检查,以验证Python版本;但那又有什么意义呢?即使版本不匹配-您的代码仍可能运行。您需要检查您的代码是否使用了2.7中引入的功能,我不知道是否有自动方式。“我不确定这是否属于编程问题;这只是文档/安装问题。”按照这种逻辑,您根本不应该拥有requirements.txt,因为人们可能会认为它是库的最新版本,并使用该库中的功能,而这些功能在他们实际使用的版本中并不存在。此外,如果您没有单元测试(在您的示例中可能会出现这种情况),那么您无论如何都在玩一个危险的游戏。