VirtualEnv/Pip пытается установить пакеты по всему миру

Изменить # 2 найденное решение; см. ниже.

Я пишу небольшое приложение в Flask с помощью VirtualEnv. Это далеко не первый раз, когда я это сделал, но на этот раз и два раза, когда я пытался, я столкнулся с той же проблемой. Когда я . flask/bin/activate и попытаюсь установить пакет - pip install flup, например, он будет устанавливаться глобально, а не в VirtualEnv. Странно, это происходит только после я deactivate, и это делает это непоследовательно.

В этом случае я, кажется, смогу установить все, что мне нужно, если я сделаю все это сразу и даже иногда после я deactivate, но через определенный промежуток времени он просто перестает работать и начинает пытаться установить в мой глобальный Python site-packages. (Естественно, он также просил разрешения, когда он это делает. Прежде чем я понял, что происходит, я попытался заставить его с помощью sudo, думая, что я случайно навлек на него sudo virtualenv flask -инг или что-то еще, но нет, он будет глобальным по какой-то другой причине.)

Я не делаю ничего смешного, как использование аргумента --system-site-packages, и я ничего не изменил в своей конфигурации VirtualEnv, прежде чем он начнется. Впервые это случилось, я записал это на случайную случайность. Теперь это становится серьезно раздражающим, потому что я не в настроении удалять все и переустанавливать его каждый раз, или молиться, чтобы я подумал обо всем, что мне нужно, в бутстрапе script.

Я не включаю никаких сообщений об ошибках, потому что они не являются (или не кажутся) особенно ценными; это просто requirement already satisfied кричать на меня снова и снова.

Изменить # 1 Я немного разбираюсь в проблеме, но у меня все еще нет решения. Я создал новый проект Flask в том же каталоге, cd -ed в него, активировал его VirtualEnv и т.д., Затем запустил which pip. Это был новый пик VirtualEnv - правильный пип. Я деактивирован, cd - в моем исходном проекте, активирован VirtualEnv и запущен which pip. Он выплевывает другой проект - новый - пип. я rm -r -в новый тестовый проект, вернусь к оригиналу, снова запустил which pip, и он выплюнул /usr/local/bin/pip. Ой. OK.

Редактировать # 2: Решение Возможно, я не понял точной причины, но нашел решение. Сами скрипты bin/activate и bin/pip были каким-то образом изменены, возможно, из-за случайного запуска двух VirtualEnvs одновременно (?). Может быть, это просто совпадение, что это произошло три раза подряд после того, как никогда не случалось. Незнайка.

I cat -ed activate и, конечно, на линии 42 было

VIRTUAL_ENV="/Users/chaseries/blueprint/python/flask2/flask"

вместо

VIRTUAL_ENV="/Users/chaseries/blueprint/python/flask/flask"

Я изменил его, снова запустил which pip и получил правильный результат. Пробовал установку, получил трассировку стека, которая привела меня к bin/pip, и обнаружил, что ее shebang был неправильным. Изменил его на правильном пути, и все работает отлично.

Ответ 1

У меня была та же проблема. Для меня причина в том, что у моего virtualenv были пробелы на пути.

Перемещение виртуального пространства на безразличный путь разрешило проблему.

Ответ 2

Если вы переименовали каталог проекта, содержащий каталог виртуальной среды ENV, попробуйте уничтожить каталог ENV и воссоздать virtualenv и активировать его и переустановить зависимости pip.

TL-DR; Удалите виртуальную среду, создайте новую, активируйте ее и снова выполните команды pip.