pyvenv 安装了错误的 pip 版本

pyvenv installs wrong pip version

我正在使用 pyvenv env 创建一个 virtualenv,但安装的 pip 版本已过时。我可以在虚拟环境中手动更新 pip,但我希望自动获得正确的版本。

没有激活 venv:

~> pip -V
pip 7.1.2 from /usr/lib/python3.4/site-packages (python 3.4)

正在安装 venv:

~> pyvenv env
~> source env/bin/activate.fish

启用 venv 后:

~> pip -V
pip 6.0.8 from /home/syntonym/test/env/lib/python3.4/site-packages (python 3.4)

我正在使用 arch,并且 pip 由 pip 和 pacman(arch 数据包管理器)管理,这可能不是一个好主意。我仍然不知道 pyvenv 从哪里获得 6.0.8 版本的 pip 或如何修复它。用 pacman 重新安装没有帮助。

编辑:

ensurepip 声称它已经是最新的:

~> python -m ensurepip --upgrade
Ignoring indexes: https://pypi.python.org/simple
Requirement already up-to-date: setuptools in /usr/lib/python3.4/site-packages
Requirement already up-to-date: pip in /usr/lib/python3.4/site-packages

您可以通过执行

在虚拟环境中手动升级pip
pip install -U pip

您遇到这个问题,因为 venv 使用 ensurepippip 添加到新环境中:

Unless the --without-pip option is given, ensurepip will be invoked to bootstrap pip into the virtual environment.

Ensurepip 包不会从 Internet 下载或从其他任何地方抓取文件,因为所有必需的组件都已包含在包中。这样做会增加安全漏洞,因此不受支持。

Ensurepip 并非旨在为您提供最新的 pip,而只是 "a" pip。要获得最新版本,请使用本文开头的手动方式 post。