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

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

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

1 Ответ

0 голосов
/ 27 октября 2018

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

Учитывая, что задействованы следующие пути: /usr/local/bin и /usr/local/opt/python/bin/python2.7, я предполагаю, что вы используете OS X здесь и у вас установлен Homebrew. 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 должен показывать каталог virtualenv .../bin/ в качестве первой записи. Если он не активен, активируйте его, запустив

source bin/activate

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

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

path/to/venv/bin/flask
...