2014-01-06 4 views
6

Редактировать # 2 Решение найдено; Смотри ниже.VirtualEnv/Pip пытается установить пакеты по всему миру

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

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

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

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

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

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

Я 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

Почему у него есть разрешение на установку на ваш глобальный питон при запуске без sudo? или он пытается и не работает? –

+0

Это попытка и неудача, но я не могу понять, почему она пытается в первую очередь. –

+2

Просто запустите виртуальный пипс с его полным путем (т. Е. Не полагайтесь на поиск исполняемого пути), и вам даже не нужно активировать среду. Он будет поступать правильно. –

ответ

1

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

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

0

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

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

+0

Вы имеете в виду, что виртуальная среда не должна иметь «env» в ее имени? Потому что я испытал ошибку выше в своей виртуальной среде, которая имеет «env» в своем названии. (Он также находится в каталоге с именем «env» в его названии.) –

Смежные вопросы