python-2.7 - for - google cloud publish app




appcfg.py não está funcionando na linha de comando (2)

Eu finalmente localizei o motivo real, e não foi um bug com o AppEngine SDK. Pelo contrário, foi com o meu interpretador Python, pois percebi que ele não aceitava argumentos para nenhum arquivo .py. Ele acabou por ser um erro de registro, localizado em [HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command] onde eu tive que alterar o valor de "C:\Python27\python.exe" "%1" para "C:\Python27\python.exe" "%1" %*

Como isso aconteceu, seja o instalador do Python 2.7 ou talvez o AppEngine SDK, eu não tenho certeza.

Eu estou apenas tendo um pouco de dificuldade em entender porque este comando:

>appcfg.py -A adept-box-109804 update app.yaml

conforme fornecido pela página Experimente o Google App Engine agora não funciona. Baixei o SDK do App Engine para Python e configurei o Path para apontar para o local de appcfg.py, mas executar o appcfg.py no diretório-raiz de meus projetos não funciona na linha de comando. Eu tenho que navegar para a pasta contendo appcfg.py e fazer

>python appcfg.py help

ou fazer

>python "C:\Program Files (x86)\Google\google_appengine\appcfg.py" help

para obter um comando para trabalhar em qualquer lugar. Usei o último método para implantar meu aplicativo de teste, mas fiquei imaginando se alguém poderia explicar por que o comando fornecido pelo simples tutorial do Google não fazia nada. Eu também verifiquei se os arquivos .py são abertos automaticamente com o interpretador Python 2.7, de modo que um arquivo hello.py seja executado na linha de comando simplesmente digitando.

>hello.py

e irá imprimir sua declaração de impressão. Por outro lado, usar o appcfg.py de maneira semelhante fornece a mesma saída, não importando os argumentos (observe que truncado a saída, mas tenha certeza de que eles são idênticos, independentemente dos argumentos:

C:\>appcfg.py help backends
Usage: appcfg.py [options] <action>

Action must be one of:
  backends: Perform a backend action.
  backends configure: Reconfigure a backend without stopping it.
  backends delete: Delete a backend.
  backends list: List all backends configured for the app.
  backends rollback: Roll back an update of a backend.
  backends start: Start a backend.
  backends stop: Stop a backend.
  backends update: Update one or more backends.
  create_bulkloader_config: Create a bulkloader.yaml from a running application.
  cron_info: Display information about cron jobs.
  delete_version: Delete the specified version for an app.
  download_app: Download a previously-uploaded app.
  download_data: Download entities from datastore.
  help: Print help for a specific action.
  list_versions: List all uploaded versions for an app.
  request_logs: Write request logs in Apache common log format.
  resource_limits_info: Get the resource limits.
  rollback: Rollback an in-progress update.
  set_default_version: Set the default (serving) version.
  start_module_version: Start a module version.
  stop_module_version: Stop a module version.
  update: Create or update an app version.
  update_cron: Update application cron definitions.
  update_dispatch: Update application dispatch definitions.
  update_dos: Update application dos definitions.
  update_indexes: Update application indexes.
  update_queues: Update application task queue definitions.
  upload_data: Upload data records to datastore.
  vacuum_indexes: Delete unused indexes from application.
Use 'help <action>' for a detailed description.

C:\>appcfg.py help update
Usage: appcfg.py [options] <action>

Action must be one of:
  backends: Perform a backend action.
  backends configure: Reconfigure a backend without stopping it.
  backends delete: Delete a backend.
  backends list: List all backends configured for the app.
  backends rollback: Roll back an update of a backend.
  backends start: Start a backend.
  backends stop: Stop a backend.
  backends update: Update one or more backends.
  create_bulkloader_config: Create a bulkloader.yaml from a running application.
  cron_info: Display information about cron jobs.
  delete_version: Delete the specified version for an app.
  download_app: Download a previously-uploaded app.
  download_data: Download entities from datastore.
  help: Print help for a specific action.
  list_versions: List all uploaded versions for an app.
  request_logs: Write request logs in Apache common log format.
  resource_limits_info: Get the resource limits.
  rollback: Rollback an in-progress update.
  set_default_version: Set the default (serving) version.
  start_module_version: Start a module version.
  stop_module_version: Stop a module version.
  update: Create or update an app version.
  update_cron: Update application cron definitions.
  update_dispatch: Update application dispatch definitions.
  update_dos: Update application dos definitions.
  update_indexes: Update application indexes.
  update_queues: Update application task queue definitions.
  upload_data: Upload data records to datastore.
  vacuum_indexes: Delete unused indexes from application.
Use 'help <action>' for a detailed description.

Eu tive esse problema, e é aprofundado na versão de python de variável local que diferente da versão de python do mecanismo de app. Portanto, a solução é apenas adicionar antes do script a localização atual da versão do python:

C:\Python27\python.exe "C:\Program Files (x86)\Google\google_appengine\appcfg.py"

E isso só volta a funcionar bem.