Почему мой venv использует другую версию pip, чем я установил - PullRequest
5 голосов
/ 02 мая 2020

Я настраиваю виртуальную среду. Я получал предупреждения об устаревшем pip (19.2), поэтому я обновил pip в своей системе (macos) глобально, sudo -H python3 -m pip install --upgrade pip. Кажется, это сработало, но когда я делаю новый venv, я все еще получаю старую версию в пипсах.

% pip --version           
pip 20.1 from /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pip (python 3.8)
% python3 -m pip --version
pip 20.1 from /Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/pip (python 3.8)
% rm -rf .venv # make sure
% python3 -m venv .venv   
% . .venv/bin/activate    
(.venv)     % python3 -m pip --version
pip 19.2.3 from /Users/marvin/.venv/lib/python3.8/site-packages/pip (python 3.8)
(.venv)     % pip --version           
pip 19.2.3 from /Users/marvin/.venv/lib/python3.8/site-packages/pip (python 3.8)

Откуда берется старая версия?

1 Ответ

2 голосов
/ 02 мая 2020

Pip устанавливается заново в любой недавно созданный venv. Версия пипа venv по умолчанию связана с версией Python и полностью независима от версии пипа, которую вы, возможно, установили в системе. Старая версия взята из файла wheel в комплекте с модулем stdlib ensurepip. Это позволяет пользователям создавать venv даже при отсутствии доступного соединения inte rnet, как указано в venv docs :

Если не указана опция --without-pip, ensurepip будет вызываться для bootstrap pip в виртуальной среде

Вы можете проверить версию связанного пункта с помощью ensurepip.version:

>>> import ensurepip
>>> ensurepip.version()
'19.2.3'

Python 3.8 - это , в настоящее время продающий пип 19.2.3 и setuptools 41.2.0 , соответствующий тому, что вы видели.

Для создания вен напрямую с последней версией пипа, а не создавая их с более старым пипом и затем обновляя версию пипса, обратитесь к этому ответу:

Как получить «python -m venv» для прямой установки последней версии пипса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...