Я смущен тем, как работают виртуальные среды Python (Python 3.6, используя venv
). Я настроил свой venv и активировал его в командной строке. Я бы ожидал, что все, что я делаю с этого момента, использует команды python и pip из виртуальной среды (так как эти каталоги добавляются в PATH при активации).
Дело в том, что когда я запускаю pip --version
в моем venv
, он возвращает pip 10.0.1
. Но когда я пытаюсь обновить его с помощью python -m pip install --upgrade pip
, я получаю Requirement already up-to-date
(venv) PS C:\Python\files\myproj> pip --version
> pip 10.0.1 from c:\python\files\myproj\venv\lib\site-packages\pip-10.0.1-py3.6.egg\pip (python 3.6)
(venv) PS C:\Python\files\myproj> python -m pip install --upgrade pip
> Requirement already up-to-date: pip in c:\python\files\myproj\venv\lib\site-packages (18.0)
Итак, что происходит? Почему команда командной строки не таргетирует тот же pip
что и python
? И как исправить это?
pip
все еще указывает на глобальную, даже когда в Вене. python
, однако, не использует и использует venv.
Это означает, что при запуске pip --version
вы получаете свою глобальную версию pip. когда вы запускаете python -m pip install --upgrade pip
, вы используете версию pivon venv, у которой, по-видимому, уже есть новейший пип. Чтобы подтвердить это, вы можете запустить python -m pip --version
и вы должны получить последнюю версию в качестве вывода.
pip install a-package
в активированной среде, пакет устанавливается в среде, а не глобально?
pip
указывают на другую версию pip, отличную от той, что в вашем venv.python -m pip
использует версию в вашем venv.venv
, версия пипс является глобальной? И только глобальныйpython
обменивается на питона венва?