venv vs virtualenv - Почему venv не использует текущий pip и setuptools?
Когда используешь python -m venv venv
создать новую виртуальную среду в python3.X, venv
не содержит pip
а также setuptools
версии я бы ожидал. Вместо этого он содержит довольно "старые" версии: pip (8.1.1)
а также setuptools (20.7.0)
,
С другой стороны, при использовании virtualenv venv
(устанавливается через pip install virtualenv
), пакеты pip и setuptools являются самыми последними, т.е. pip (10.0.1)
а также setuptools (39.2.0)
по состоянию на июнь 2018 года.
Как я понял, venv
является предпочтительным модулем для создания виртуальных сред, поскольку ему не нужно создавать новый экземпляр интерпретатора Python, и он использует существующие модули (символические ссылки в Linux, копии в Windows) без необходимости устанавливать что-либо ( https://www.reddit.com/r/learnpython/comments/4hsudz/pyvenv_vs_virtualenv/d2s2cda).
Как это случилось venv
"s pip
версия не соответствует текущей версии системы? И что поведение с помощью virtualenv
так отличается?
PS:
Краткосрочное решение заключается в использовании pip install --upgrade pip
в venv
, Но это не кажется мне правильным. Минимальный жизнеспособный пример:
$ 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 venv
$ . venv/bin/activate
(venv) $ 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
(venv) $ pip list
Package Version
------------- -------
pip 10.0.1
pkg-resources 0.0.0
setuptools 20.7.0
0 ответов
Не пытаюсь оживить старую ветку, но вот ответ, который я нашел, почему это происходит при использовании venv- короткий ответ-
venv вызывает surepip.version(), чтобы получить версию, которая получает версию связанного пакета.
Кредиты на оригинальный ответ отсюда: