2016-06-15 12 views
10

Sto provando a distribuire un server di dardo di esempio utilizzando Google AppEngine. Tuttavia quando ho eseguito questo script python (con l'ultima versione di Python installata 3,5)Errore Dev_appserver.py durante il tentativo di distribuzione su Google AppEngine

dev_appserver.py

Ho anche provato

dev_appserver.py --custom_entrypoint "dart bin/server.dart {port}" app.yaml

ottengo questo errore:

Traceback (most recent call last): 
    File "C:\Users\jkrie\AppData\Local\Google\Cloud SDK\google-cloud- sdk\bin\dev_appserver.py", line 11, in <module> 
    import bootstrapping.bootstrapping as bootstrapping 
    File "C:\Users\jkrie\AppData\Local\Google\Cloud SDK\google-cloud-sdk\bin\bootstrapping\bootstrapping.py", line 9, in <module> 
    import setup 

ImportError: No module named 'setup'

Ho anche installato setuptools. Devo supporre che ci sia qualcosa di sbagliato nell'installazione di Google Cloud SDK, ma davvero non so cosa. Python 3.5 è troppo nuovo e ho bisogno di provare una versione precedente?

risposta

3

Infatti è necessario utilizzare Python 2 per l'ambiente standard App Engine per il momento.

Se si dispone di Python 3, è possibile creare un virtualenv utilizzando Python 2 utilizzando mkvirtualenv google --python=$(which python2) ed eseguire dev_appserver.py . in tale ambiente.

Ciò consente di risparmiare il fastidio di dover effettuare un downgrade o link simbolico pitone per python2

0

ho avuto questo problema da quando ho installare sia python2.9 e python3.6. Il modo rapido senza disinstallare python3 è solo eliminare il percorso python3 nelle variabili di ambiente mentre si utilizza GAE. Aggiungili quando hai finito con GAE.

0

Ho avuto lo stesso problema con una semplice applicazione python35 (ora, un anno dopo!) Ho creato un ambiente virtuale python27 che funziona, ma aveva bisogno di più soluzioni.

La cosa più semplice è quello di eseguire solo python applicationmodule.py sulla riga di comando di shell, garantendo avete questo in fondo:
if __name__ == '__main__': # This is used when running locally. Gunicorn is used to run the # application on Google App Engine. See entrypoint in app.yaml. app.run(host='127.0.0.1', port=8080, debug=True)

Se si desidera eseguire utilizzando dev_appserver.py poi, ho trovato avevo bisogno di eseguire il seguente per fare in modo che funzioni su Google Cloud Shell: dev_appserver.py app.yaml --custom_entrypoint ./applicationmodule.py

In tal caso, verificare che il codice applicationmodule.py non contenga il codice if __name__ == '__main__':. Se si dispone di questo, quindi avvia nuovamente la stessa attività e si lamenta sulla contesa sulla porta 8080.

Questo è diverso da altre risposte che hanno il parametro --custom_entrypoint più simile alla voce app.yaml entrypoint:.

A un punto in esecuzione dev_appserver.py si è lamentato per l'esecuzione di applicationmodule.py (ho dimenticato esattamente), quindi ho fatto entrambi chmod 777 e ho aggiunto un #! indicando il mio eseguibile python locale - ha funzionato dopo averlo fatto entrambi, ma non so se era lo o lo #! che lo ha fatto.

2

Google potrebbe anteporre il file con

#!/usr/bin/env python2 

invece di

#!/usr/bin/env python 

Sarebbe rendere i loro strumenti compatibili con sistemi operativi che utilizzano python3 come predefinito.

1

Come @ dan-cornilescu detto supporto GAE standard Ambiente solo Python2.7

Se ci si trova in un ambiente con multiversione di Python, si potrebbe facilmente utilizzare Pipenv per eseguire il dev_appserver.py con Python 2.7 versione.

Dopo aver have installed pipenv globaly è possibile creare un ambiente pipenv all'interno della cartella di progetto con Python 2,7

# pipenv install --twoo 

Ogni volta che è necessario eseguire dev_appserver.py si dovrebbe usare questo comando

# pipenv run dev_appserver.py app.yaml 

pipenv volontà usa Python 2.7 per eseguire il tuo codice. ;-)

Problemi correlati