Ubuntu PIP устанавливает пакеты глобально, а не внутри VirtualEnv

Ubuntu PIP устанавливает пакеты глобально, а не внутри VirtualEnv

Я пытаюсь создать virtualenv и установить пакеты из requirements.txt, которые есть у меня в проекте.

Когда я создаю среду, я проверяю, что python и pip действительно происходят из этой среды. А именно, когда я запускаю:

source ./virtualenv/bin/activate

which pip

which python

Я получаю результаты, указывающие на двоичные файлы, расположенные внутри каталога virtualenv

Затем я приступаю к установке пакетов: pip install -r requirements.txt

Некоторое время меня беспокоила pkg-resources=0.0.0строка в requirements.txt. Как оказалось, эта строка была введена в этот файл из-за ошибки в Ubuntu. Как вы, вероятно, догадались, я создал этот файл на машине с Ubuntu.

Как только я зачеркну линию, установка продолжится.

Однако, когда я запускаю pip list после установки, список содержит только

pip (8.1.1) pkg-ресурсы (0.0.0) setuptools (20.7.0)

Более того, если я деактивирую virtualenv и запущу pip list глобально, я увижу, что все зависимости были установлены глобально.

Здесь есть два вопроса. Один - самый отвратительный - почему это происходит? Второй - как мне очистить свои глобальные пакеты и удалить загрязняющие вещества, которые теперь там находятся?

Приложение:

Еще одно странное поведение заключается в следующем. Когда я пытаюсь запустить sudo pip uninstall -r requirements.txtиз virtualenv в надежде отменить глобальную установку, я получаю следующую ошибку:

Невозможно удалить требование aldryn-apphooks-config, оно не установлено

То есть, похоже, что когда я пытаюсь удалить, pip пытается искать пакеты внутри virtualenv.

С другой стороны, когда я деактивирую virtualenv, я могу успешно удалить пакеты из глобальной установки, используя ту же команду.

Каким-то образом, есть разница в том, как команда pip install работает в Ubuntu по сравнению с командой pip uninstall. Они «ищут» пакеты в разных местах.

Связанный контент