Изменить # 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 был неправильным. Изменил его на правильном пути, и все работает отлично.