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

app.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 (и по подобен начин за другия)? Datastore много ли прилича на ndb? Наистина искам да продължа с appengine, но препятствията нарастват. - person zerowords; 29.04.2020
comment
datastore не е като ndb, има нова ndb библиотека, наречена google-cloud-ndb, която трябва да разгледате. що се отнася до другите, не можете ли просто да ги поставите във вашите изисквания.txt? cloud.google.com/appengine/docs/standard/python3/ И защо трябва да се върнете към предишна версия на dev_appserver? - person Alex; 30.04.2020
comment
@zerowords по-новата среда на Python 3 за AppEngine използва Flask, който включва jinja2 (не е необходимо да указвате jinja2 в requirements.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