我在运行
OSX 10.10.2和时遇到相同的问题
python 3.4.2。最近,我在具有虚拟
debianwheezy机的计算机上创建了一个虚拟环境,
python 3.4.3并最终获得了
pip比可用的旧版本。必须升级
pip。
我已经升级
pip在虚拟环境中,以
6.1.1从
6.0.8手动,因为我强迫症有关的软件库版本的方式-是的,我在我的升级
python3版本
3.4.3现在。无论如何,我的系统
python3-pip是最新版本
6.1.1,所以我也想知道为什么
pyvenv创建一个新的虚拟环境并用old加载它
pip。
我没有注意到由于升级而导致的任何虚拟环境中发生的任何不良情况
pip,(但另一方面,我也没有注意到任何良好的情况)显然,新的pip更快-
没注意到,并且输出更少成功安装失败的原因是用户不在乎-
也没有注意到,可能是因为我是不在乎的用户之一,并且还配备了能够拿铁的先进咖啡机开机!!!-仍在等待
sudo pip install latte完成:(
因此,要回答您的问题,绝对有可能,并且建议升级,因为显然新
pip补丁修复了一些错误并且运行得更快,但是我想速度并不是那么重要,并且这些错误修复不会影响到所有问题。这么多的人(我从来没有遇到过使用旧版本的错误
pip)。
您 可以 使用该标志–system-site-packages中链接到系统站点包,当你创建一个新的虚拟环境中,这样的
pyvenv myenv --system-site-packages
这将链接到您的系统范围的pip版本,并消除了在每个虚拟环境上手动升级pip的烦恼,但是如果您这样做,那么您的虚拟环境是否就是所有虚拟的?
更新:按照上面的要求,我进入了
venv软件包的源代码进行挖掘。
pip是通过
_setup_pip文件
__init__.py中第248行中调用的方法设置的
def _setup_pip(self, context): """Installs or upgrades pip in a virtual environment""" # We run ensurepip in isolated mode to avoid side effects from # environment vars, the current directory and anything else # intended for the global Python environment cmd = [context.env_exe, '-Im', 'ensurepip', '--upgrade', '--default-pip'] subprocess.check_output(cmd, stderr=subprocess.STDOUT)
因此,venv似乎正在
ensurepip使用该
subprocess模块从Shell进行调用。
再过一分钟的google-
fu给我提供了来自surepip的文档。
surepip.version()
返回一个字符串,该字符串指定在引导环境时将安装的pip捆绑版本。
因此,从命令行输入以下代码:
$ python3 -c 'import ensurepip; print(ensurepip.version())' 6.0.8
显示
pip将用引导的当前电流
ensurepip。
我猜我们在
pip每次
ensurepip升级之前都只能使用旧版本的,直到升级为止,因为我找不到升级附带的pip版本的方法
ensurepip



