Я создал виртуальную среду Python, и активировать его, выполнив:Python - Виртуальная среда использует систему каталоги
[email protected] $ source ./venvs/deep-learning/bin/activate
Который превращает строку в:
(deep-learning) [email protected] $
Теперь, когда я запустить python или попытаться установить его, система, похоже, игнорирует тот факт, что она находится в виртуальной среде и делает все в масштабах всей системы:
(deep-learning) [email protected] $ which pip
/usr/local/bin/pip
То же самое происходит, когда я пытаюсь установить новые пакеты, которые не входят в мою систему; он устанавливает их в системные файлы (т. е./usr/bin) вместо виртуальной среды.
Что случилось с моей виртуальной средой? Как заставить его игнорировать системные файлы и делать все внутри среды?
Я посмотрел на this вопросе, который говорит, чтобы использовать явный флаг при создании виртуальной среды, чтобы сделать его использовать локальные пакеты среды, но я использовал python-3.5 -m venv
для создания виртуальной среды, и этот флаг будет удален в этой версии, поскольку теперь она является опцией по умолчанию.
Я также рассмотрел вопрос this и могу подтвердить, что переменная VIRTUAL_ENV
установлена правильно в файле виртуальной среды activate
.
Каков результат 'echo $ PATH'? активировать предполагается разместить двоичные файлы venv на передней панели PATH – jonatan
@jonatan - Оказывается, потому что я установил venv без pip, команда 'pip' использовала систему. По-видимому, это заставляет его устанавливать пакеты в систему, несмотря на то, что они находятся в виртуальной среде. Я действительно не понимаю этого, но мне удалось решить это в моем ответе. – Myridium
Возможный дубликат [virtualenv не включает pip] (http://stackoverflow.com/questions/34503686/virtualenv-does-not-include-pip) – holdenweb