google dev_appserver выдает ошибку «python2: команда не найдена» после обновления до python 3.7

До вчерашнего дня я успешно использовал dev_appserver.py app.yaml --enable_console для своего развития. Вчера я попытался перейти на Python 3.7 для своей разработки. Обновление вроде прошло нормально, но теперь я получаю следующее сообщение об ошибке.

server:bones brian$ dev_appserver.py app.yaml --enable_console
ERROR: (dev_appserver) python2: command not found

приложение.yaml:

application: bones 
version: 1
runtime: python37
entrypoint: gunicorn -b :$PORT main:app
api_version: 1
threadsafe: true

handlers:
- url: /static
  static_dir: static

- url: /.*
  script: main.app

Я использую Mac OS X 10.11.6.

Почему dev_appserver вообще ищет python2? И как я могу это исправить?


person zerowords    schedule 29.04.2020    source источник


Ответы (4)


Не похоже, что вы можете это исправить:

Для запуска dev_appserver требуется наличие Python 2.7.12+ на вашем локальном компьютере.

https://cloud.google.com/appengine/docs/standard/python3/testing-and-deploying-your-app#local-dev-server

person Alex    schedule 29.04.2020
comment
Ваш ответ сработал, и я очень ценю ваш ответ. Но я действительно сбит с толку сейчас о том, как идти дальше. Я завишу от следующих импортов и не вижу простого способа получить их в этой среде 3.7: ndb, jinja2, webapp2, json. Могу ли я вернуться к предыдущей версии dev_appserver, и если нет, что я могу прочитать, чтобы узнать, как минимально изменить мой код, чтобы двигаться дальше? Кстати, jinja2 (и любые другие в моем списке) теперь встроены или мне нужно импортировать django (и аналогично для другого)? Хранилище данных очень похоже на ndb? Я действительно хочу продолжить работу с appengine, но препятствия нарастают. - person zerowords; 29.04.2020
comment
хранилище данных не похоже на ndb, есть новая библиотека ndb под названием google-cloud-ndb, на которую стоит обратить внимание. Что касается других, вы не можете просто указать их в файле requirements.txt? cloud.google.com/appengine/docs/standard/python3/ А зачем вам возвращаться на предыдущую версию dev_appserver? - person Alex; 30.04.2020
comment
@zerowords более новая среда Python 3 для AppEngine использует Flask, который включает jinja2 (вам не нужно указывать jinja2 в требованиях.txt) и удаляет зависимости от webapp2 (вы будете использовать обработчики запросов Flask). Как упоминалось в комментарии выше, google-cloud-ndb заменит голую библиотеку ndb, которую вы использовали в python27. Библиотека json должна быть доступна. Извините, что это не помогает с вопросом, но, надеюсь, поможет с переходом на среду Python 3. - person Eddie; 27.08.2020

У меня есть проект Python 3.7 Google App Engine, и я не могу выполнить команду dev_appserver.py по той же причине (python2: command not found). По разным причинам перейти на Python 2.7 невозможно.

Я не думаю, что принятый ответ здесь (что dev_appserver.py предназначен только для работы с Python 2.7) точен; документация GAE для Python 3.7 фактически содержит списки dev_appserver.py как вариант локальной разработки. Это больше похоже на ошибку gcloud.

(Примечание: я знаю, что это было бы лучше в качестве комментария к предыдущему ответу, но, поскольку я новый пользователь SO, у меня еще нет разрешения на публикацию комментариев)

person jtotoole    schedule 28.05.2020
comment
Спасибо за ответ. Я действительно разочарован python 3.7 из-за всего беспорядка с разными версиями pip и разными виртуальными средами (и так далее), необходимыми для GAE. Кажется, я не могу преодолеть все ошибки, которые бросают мои действия. Я почти полностью ушел на python 2.7. Я хотел бы прочитать о том, как поддерживать версии 3.7 и 2.7 на моем Mac. Похоже, мой PATH настолько запутался, что теперь не может справиться, поэтому мне особенно нужна помощь. - person zerowords; 29.05.2020
comment
@jtotoole Пришел к этому поздно. Да, dev_appserver — это вариант локальной разработки для Python3, но для работы (для его вызова) по-прежнему требуется python2.7. Сами Google рекомендуют НЕ использовать dev_appserver для запуска python3 env. Они говорят We recommend that you use standard Python tools, such as virtualenv to create isolated environments and pytest to run unit tests and integration tests, rather than depending on dev_appserver Итак, принятый ответ правильный, и это не ошибка gcloud. - person NoCommandLine; 27.03.2021

Как указано в других ответах, для dev_appserver требуется Python 2.7.12+.

Пользователям OSX потребуется запустить:

brew install pr0d1r2/python2/[email protected] --build-from-source

Я бы добавил это как комментарий к предыдущим ответам, но мне не хватает кредитов stackoverflow ????

person Manoj Nathwani    schedule 03.01.2021

Просто нужно, чтобы на компьютере был установлен python2 (даже если ваше приложение на python3).

Итак, решение просто:

sudo apt-get install python2 python2-dev
person avimimoun    schedule 06.04.2021