Ubuntu PIP устанавливает пакеты глобально, а не внутри VirtualEnv
Я пытаюсь создать virtualenv и установить пакеты из файла require.txt, которые есть в проекте.
Когда я создаю среду, я проверяю, что Python и pip действительно происходят из этой среды. А именно, когда я бегу:
source ./virtualenv/bin/activate
which pip
which python
Я получаю результаты, которые указывают на двоичные файлы, расположенные в каталоге virtualenv
Затем я приступаю к установке пакетов:pip install -r requirements.txt
Какое-то время это доставляло мне проблемы с pkg-resources=0.0.0
Строка в пределах требований. текст. Как оказалось, эта строка вводится в этот файл из-за ошибки в Ubuntu. Как вы можете догадаться, я создал этот файл на машине с Ubuntu.
Как только я вычеркну линию, установка продолжается.
Однако, когда я запускаю список пипсов после установки, список содержит только
pip (8.1.1) pkg-resources (0.0.0) setuptools (20.7.0)
Более того, если я деактивирую virtualenv и запускаю список пипсов глобально, я вижу, что все зависимости были установлены глобально.
Здесь есть два вопроса. Один - это самый отвратительный - почему это происходит? Второй - как я могу очистить свои глобальные пакеты и удалить загрязнители, которые сейчас там находятся?
Приложение:
Еще одно странное поведение состоит в следующем. Когда я пытаюсь бежать sudo pip uninstall -r requirements.txt
изнутри virtualenv с надеждой обратить вспять глобальную установку я получаю следующую ошибку:
Невозможно удалить требование aldryn-apphooks-config, не установлено
То есть, кажется, что когда я пытаюсь удалить, pip пытается найти пакеты внутри virtualenv.
С другой стороны, когда я деактивирую virtualenv, я могу успешно удалить пакеты из глобальной установки с помощью той же команды.
Так или иначе, существует разница в том, как команда pip install работает в Ubuntu по сравнению с командой pip uninstall. Они "ищут" посылки в разных местах.