26

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

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

4

5 回答 5

14

pip 和 virtualenv 都没有安装 python(尽管pip 尝试了)。他们使用您指定的任何内容。

您可以编写一个提到所需 Python 版本的 README,或者提供一个可以部署到 localhost 并在那里指定版本的结构脚本。例如,安装 virtualenv、pip、distribute 的说明

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

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

于 2012-08-09T18:58:22.553 回答
3

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

只需将其添加到您在加入时为新成员提供的正常说明中即可;当您告诉他们有关内部文档 wiki、wifi 的密码和三明治送货店的电话号码时,就在同一个地方。

不必告诉人们并让他们自己弄清楚是非常不方便的;他们第一次提交的东西collections.Counter只是为了发现它破坏了构建,因为服务器没有 2.7.x

于 2012-08-09T18:58:27.187 回答
3

你不能把它放进去requirements.txt,但你可以在脚本的顶部添加这个代码:

import sys
if sys.version_info[0:2] != (2, 6):
    raise Exception('Requires python 2.6')
于 2021-08-30T16:34:17.940 回答
0

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

于 2012-08-09T22:10:23.387 回答
0

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

sudo update-alternatives  --set python /usr/bin/python3.7
于 2020-06-29T23:33:40.643 回答