【发布时间】:2018-11-14 01:30:20
【问题描述】:
当使用python -m venv env 在python3.X 中创建新的虚拟环境时,env 不包含我所期望的pip 和setuptools 版本。相反,它包含相当“旧”的版本:截至 2018 年 6 月的 pip (8.1.1) 和 setuptools (20.7.0)。
另一方面,当使用 virtualenv env(通过 pip install virtualenv 安装)时,pip 和 setuptools 软件包是最新可用的,即截至 2018 年 6 月的 pip (10.0.1) 和 setuptools (39.2.0)。
按照我的理解,venv 是构建虚拟环境的首选模块,因为它不需要创建 Python 解释器的新实例并使用现有模块(Linux 中的符号链接,在 Windows 中复制),无需安装任何东西(https://www.reddit.com/r/learnpython/comments/4hsudz/pyvenv_vs_virtualenv/d2s2cda)。
venv的pip版本怎么和当前系统不匹配?并且使用virtualenv 的行为如此不同?
PS:
短期解决方案是在env 中使用pip install --upgrade pip。但这对我来说似乎不对。最小可行解决方案:
$ python --version
Python 3.6.5
$ pip --version
pip 10.0.1 from /home/lionel/.local/lib/python3.6/site-packages/pip (python 3.6)
$ python -m venv env
$ . env/bin/activate
(env) $ # Here I am at version 8.1.1 of pip. Why did venv create its own pip,
(env) $ # instead of linking to the system one? As seen before, that was 10.0.1.
(env) $ pip install --upgrade pip
Collecting pip
Using cached https://files.pythonhosted.org/packages/0f/74/ecd13431bcc456ed390b44c8a6e917c1820365cbebcb6a8974d1cd045ab4/pip-10.0.1-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 8.1.1
Uninstalling pip-8.1.1:
Successfully uninstalled pip-8.1.1
Successfully installed pip-10.0.1
(env) $ pip list
Package Version
------------- -------
pip 10.0.1
pkg-resources 0.0.0
setuptools 20.7.0
(env) $ # Solved, now pip is the one I was expecting!
【问题讨论】:
-
你的“python”版本是 3.6,但是你的 pip 版本是 3.5。看起来你已经以某种方式搞砸了你的环境。对于 3.6,供应商的 pip 和 setuptools 通常分别为 9.0.1 / 28.8.0(但这可能会根据编译 Python 的人而改变)。
-
嘘!停止使用 venv,使用 pipenv。稍后谢谢我。
-
你好 wim 和斋月!感谢您的回答! @wim:确实,pip 被 3.5 所吸引。我知道我的问题的解决方案在于我在我的 Ubuntu 上安装了 python3.5 和 python3.6。问题出现了,因为当我使用
venv时 pip 要求更新 (You are using pip version 8.1.1, however version 10.0.0 is available.),而在使用virtualenv时它没有要求更新,因为当时 pip 已经是最新版本。感谢 wim 指出问题所在。 -
卸载pip解决:**
python -m pip uninstall pip**以后我会尽量忽略警告You are using pip version 8.1.1, however version 10.0.0 is available. You should consider upgrading via the 'pip install --upgrade pip' command.。 -
当 pip 以正确的方式连接到 python 时,问题仍然存在(请参阅我的问题中的编辑): 1. 在 venv 之前,我在 venv 之后有
pip (10.0.1)用于 python 3.6,我有pip (8.1.1)用于 python 3.6/
标签: python pip virtualenv ubuntu-16.04 python-venv