Что означает эта ошибка колбы? /usr/local/bin/flask: плохой интерпретатор: /usr/local/opt/python/bin/python2.7: такого файла или каталога нет

Я могу сказать, что Flask пытается использовать python2.7 в качестве интерпретатора, но я не понимаю, почему. Я создал Виртуален с python3 -m venv venv, установил флягу и попытался запустить приложение. Я вижу python3.6 в моем venv, как и ожидалось, поэтому я просто не понимаю, откуда берется любая попытка использовать python2.7. Я предполагаю, что это как-то связано с моим путем, но я нахожу, что всякий раз, когда мне нужно переключиться между 2 и 3, мне нужно изменить свой путь, неизбежно нарушая другую версию.

Исходя из других языков, обещание "изолированных" венв никогда не работает должным образом, так как я часто нахожу, что Python 2 и 3 неразрывно перепутаны. Нет ли способа получить абсолютную среду Python 2 или 3?

1 ответ

Решение

В прошлом вы однажды установили Flask с Python 2.7, но этот скрипт указывает на версию Python, которая больше не устанавливается.

Учитывая, что пути являются /usr/local/bin а также /usr/local/opt/python/bin/python2.7Я предполагаю, что вы используете OS X здесь и у вас установлен Homebrew. Доморощенный выключил python формула от Python 2 до Python 3 в недавнем прошлом, и вы, вероятно, установили Flask для с Python 2 pip Команда до этого изменения. Вы должны иметь возможность просто удалить /usr/local/bin/flask Сценарий в целом, теперь он устарел и сломан.

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

Либо уточняйте flask скрипт, который будет использоваться с использованием пути к virtualenv bin/ каталог, или активируйте virtualenv правильно.

Вы можете проверить, активен ли ваш virtualenv с

echo $VIRTUAL_ENV

и это должно напечатать путь к твоему virtualenv. Вы также можете проверить, что PATH установлен правильно; echo $PATH должен показать виртуальность .../bin/ каталог в качестве первой записи. Если он не активен, активируйте его, запустив

source bin/activate

в корневом каталоге virtualenv.

Вы можете запустить правильный flask команда с помощью

path/to/venv/bin/flask
Другие вопросы по тегам