使用
另一方面,使用
据我所理解,
那么,
PS:
短期解决方案是在
python -m venv env
在Python3.X中创建新的虚拟环境时,env
中不含我期望的pip
和setuptools
版本。相反,它包含相当“旧”的版本:pip (8.1.1)
和setuptools (20.7.0)
,截至2018年6月。另一方面,使用
virtualenv env
(通过pip install virtualenv
安装)时,pip
和setuptools
包是最新可用的,即pip (10.0.1)
和setuptools (39.2.0)
,截至2018年6月。据我所理解,
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 -m pip uninstall pip
** 我将尝试忽略未来的警告“您正在使用pip版本8.1.1,但版本10.0.0可用。您应该考虑通过'pip install --upgrade pip'命令进行升级。” - Lionel Trebuchonpip(10.0.1)
,在venv之后,我有适用于Python 3.6 /的pip(8.1.1)
。 - Lionel Trebuchon