PyCharm – No se puede crear la aplicación App Engine usando DJango

Los últimos días intenté crear una aplicación de App Engine basada en DJango utilizando PyCharm Professional 2016.3.2.

Pero cada vez que bash crear una nueva aplicación de App Engine usando Django como una biblioteca de terceros, PyCharm lanza un error y dice “Crear aplicación de App Engine – App Engine SKD incorrecta o dañada: no puedo encontrar la instalación de DJango”.

Ya intenté instalar todo de nuevo, incluidos Python, PyCharm, Django y el SDK, pero todavía no funciona.

Realmente apreciaría cualquier tipo de ayuda, porque este problema me vuelve loco.

Necesitas instalar extras.

 gcloud components install app-engine-python-extras 

Y luego intente crear el proyecto django (motor de aplicaciones) nuevamente.

El SDK de Appengine heredado incluye algunas versiones de Django incluidas en su carpeta lib .

 $ find 1.9.40/ -type d -name [Dd]jango* 1.9.40/google_appengine/lib/jinja2-2.6/examples/rwbench/django 1.9.40/google_appengine/lib/jinja2-2.6/ext/django2jinja 1.9.40/google_appengine/lib/django-1.4 1.9.40/google_appengine/lib/django-1.4/django 1.9.40/google_appengine/lib/PyAMF-0.6.1/pyamf/tests/adapters/django_app 1.9.40/google_appengine/lib/django-1.2 1.9.40/google_appengine/lib/django-1.2/django 1.9.40/google_appengine/lib/PyAMF-0.7.2/pyamf/adapters/tests/django_app 1.9.40/google_appengine/lib/django-0.96 1.9.40/google_appengine/lib/django-0.96/django 1.9.40/google_appengine/lib/django-1.5 1.9.40/google_appengine/lib/django-1.5/django 1.9.40/google_appengine/lib/django-1.3 1.9.40/google_appengine/lib/django-1.3/django 1.9.40/google_appengine/lib/django-1.9 1.9.40/google_appengine/lib/django-1.9/django 1.9.40/google_appengine/google/appengine/_internal/django 1.9.40/google_appengine/google/appengine/ext/django 1.9.40/google_appengine/google/appengine/ext/builtins/django_wsgi 1.9.40/google_appengine/google/storage/speckle/python/django 

Sin embargo, el Google Cloud SDK no incluye ninguna versión de Django en lib , solo con las utilidades de Django para su propio uso interno.

 $ gcloud --version Google Cloud SDK 138.0.0 app-engine-python 1.9.49 ... $ find google-cloud-sdk/ -type d -name [Dd]jango* google-cloud-sdk/lib/third_party/oauth2client/contrib/django_util google-cloud-sdk/lib/googlecloudsdk/third_party/appengine/ext/builtins/django_wsgi google-cloud-sdk/platform/google_appengine/lib/jinja2-2.6/examples/rwbench/django google-cloud-sdk/platform/google_appengine/lib/jinja2-2.6/ext/django2jinja google-cloud-sdk/platform/google_appengine/lib/PyAMF-0.6.1/pyamf/tests/adapters/django_app google-cloud-sdk/platform/google_appengine/lib/PyAMF-0.7.2/pyamf/adapters/tests/django_app google-cloud-sdk/platform/google_appengine/google/appengine/_internal/django google-cloud-sdk/platform/google_appengine/google/appengine/ext/django google-cloud-sdk/platform/google_appengine/google/appengine/ext/builtins/django_wsgi google-cloud-sdk/platform/google_appengine/google/storage/speckle/python/django google-cloud-sdk/platform/gsutil/third_party/oauth2client/oauth2client/contrib/django_util google-cloud-sdk/.install/.backup/lib/googlecloudsdk/third_party/appengine/ext/builtins/django_wsgi google-cloud-sdk/.install/.backup/platform/google_appengine/lib/jinja2-2.6/examples/rwbench/django google-cloud-sdk/.install/.backup/platform/google_appengine/lib/jinja2-2.6/ext/django2jinja google-cloud-sdk/.install/.backup/platform/google_appengine/lib/PyAMF-0.6.1/pyamf/tests/adapters/django_app google-cloud-sdk/.install/.backup/platform/google_appengine/lib/PyAMF-0.7.2/pyamf/adapters/tests/django_app google-cloud-sdk/.install/.backup/platform/google_appengine/google/appengine/_internal/django google-cloud-sdk/.install/.backup/platform/google_appengine/google/appengine/ext/django google-cloud-sdk/.install/.backup/platform/google_appengine/google/appengine/ext/builtins/django_wsgi google-cloud-sdk/.install/.backup/platform/google_appengine/google/storage/speckle/python/django google-cloud-sdk/.install/.backup/platform/gsutil/third_party/oauth2client/oauth2client/contrib/django_util 

La solución es instalar Django de acuerdo con las instrucciones de Google para instalar paquetes de terceros, es decir:

  1. Instale django en su carpeta de libs de terceros: pip install django -t lib
  2. Agregue from google.appengine.ext import vendor;vendor.add('lib') en su módulo appengine_config.py

Como @snakecharmerb observó, los paquetes django faltan en el componente app-engine-python (1.9.49) del SDK de la nube (138.0.0).

Sin embargo, están presentes en el SDK de GAE independiente (también 1.9.49):

 /usr/local # diff google_appengine_1.9.49/lib google-cloud-sdk-138.0.0/platform/google_appengine/lib | grep -vi common Only in google_appengine_1.9.49/lib: django-0.96 Only in google_appengine_1.9.49/lib: django-1.2 Only in google_appengine_1.9.49/lib: django-1.3 Only in google_appengine_1.9.49/lib: django-1.4 Only in google_appengine_1.9.49/lib: django-1.5 Only in google_appengine_1.9.49/lib: django-1.9 Only in google_appengine_1.9.49/lib: graphy 

Por lo tanto, una alternativa a la venta de django en su aplicación podría ser cambiar a este SDK en lugar del SDK en la nube. Consulte ¿Cuál es la relación entre el SDK del motor de aplicaciones de Google y el SDK de la nube? , incluidos los comentarios.

Tenga en cuenta que no es la forma recomendada en estos días, aunque.

También puede instalar ambos e intentar copiar / enlazar los paquetes faltantes en el SDK de la nube. YMMV.

Para descargar el SDK de GAE en la página Descargar el SDK para App Engine , haga clic en Opcionalmente, también puede descargar el SDK de App Engine original para Python. “enlace”: en realidad es un control para la sección de descarga expandible a continuación:

introduzca la descripción de la imagen aquí