在 requirements.txt 中指定 'pip' 版本

Specify 'pip' version in requirements.txt

我开发了一个 Python/Django 应用程序,它从虚拟环境(由 virtualenv 创建)运行。

创建虚拟环境时,默认将 pip 的全局版本复制到新创建的环境中,这可能已经过时(例如,版本 1.5.4 来自 python-pip 包裹 Ubuntu 14.04).

为避免手动 pip 升级,将 pip 版本固定在 requirements.txt 文件中听起来是个好主意,例如添加以下行:

pip==8.1.2

在那里指定 pip 版本也将允许通过更改需求文件中的行在所有托管应用程序环境(本地、开发、生产)中升级 pip

这听起来是个好习惯吗?这种方法有什么问题吗?

您遇到的问题是由 python-virtualenv 随 Ubuntu 14.04 提供的旧版本引起的。您应该删除 Ubuntu 包并通过 pip 安装:

sudo pip install virtualenv

然后确保您也安装了最新的 pip。

sudo pip install -U pip

你应该在新的虚拟环境中安装那个版本。

请注意,requirements.txt 中列出的 pip 版本将与其他要求一起安装。因此,所有要求都将由 pip 的旧版本安装,之后 requirements.txt 中指定的版本将可用。

我总是这样做:

virtualenv /path/to/my/desired/venv/
source /path/to/my/desired/venv/bin/activate
pip install -U pip
pip install -r requirements.txt