Когда вы пытаетесь запустить исполняемые файлы с использованием методов subprocess
, обычно вы не получаете по умолчанию ту же среду (путь выполнения и текущий рабочий каталог), в которой находитесь в оболочке / терминале. Это означает, что вам может понадобиться ссылаться на файлы (как исполняемые, так и обычные файлы), используя полные пути в списке аргументов, которые вы передаете этим методам.
Поскольку жалоба на выполнение subprocess.run()
в отношении местоположения dev_appserver.py
означает, что он находит python в порядке (вы все равно можете проверить, что это версия 2.7), и вам необходимо указать полный путь для dev_appserver.py
, который зависит от в вашей ОС и в SDK, который вы используете. Например, в Linux (извините, я не специалист по Windows) путь:
<GAE_SDK_dir>/dev_appserver.py
при использовании GAE SDK
<gcloud_SDK_dir>/bin/dev_appserver.py
при использовании gcloud SDK
Скорее всего, вам также понадобится передать путь к файлу app.yaml
вашего приложения GAE - в качестве аргумента dev_appserver.py
, в противном случае вы увидите, что он будет жаловаться на невозможность найти приложение или его файлы (или просто что-то работает плохо - если файл app.yaml
не указан, dev_appserver.py
пытается автоматически его обнаружить, и это работает не во всех случаях). Я бы избегал сложностей и просто указывал app.yaml
файл (ы).
Также обратите внимание, что аргументы subprocess.run()
должны быть списком. Примерно так:
subprocess.run(['python', '<sdk_path_to>/dev_appserver.py', '<app_path_to>/app.yaml'])
См. Также appcfg.py не работает в командной строке - пост о другом исполняемом файле, но ответы в равной степени применимы к dev_appserver.py
.