J'ai un projet dans Django que j'essaye de porter sur Django-nonrel pour que je puisse le télécharger sur Google App Engine. J'ai installé django-nonrel et d'autres bibliothèques nécessaires en passant par le http://djangoappengine.readthedocs.org/en/latest/installation.htmlAjouter des bibliothèques à django nonrel
à savoir: django-nonrel djangoappengine djangotoolbox django-autoload django-dbindexer
qui est en téléchargeant leurs fichiers zip et mise dans le répertoire de mon application. Alors, mon répertoire app est: >
<app>/autoload
<app>/dbindexer
<app>/django
<app>/djangoappengine
<app>/djangotoolbox
J'ai aussi django dans mon répertoire de projet et ont lancé le projet par:
PYTHONPATH=. python django/bin/django-admin.py startproject \
--name=app.yaml --template=djangoappengine/conf/project_template app
Si j'ajoute une bibliothèque externe avec pip et en ajoutant settings.pyINSTALLED_APPS, il n'est pas reconnu par mon django-nonrel qui est assez évident compte tenu du fait que django-nonrel n'est pas installé sur mon système. Il me donne l'erreur suivante
Traceback (most recent call last):
File "/usr/local/google_appengine/google/appengine/tools/devappserver2/module.py", line 1390, in _warmup
request_type=instance.READY_REQUEST)
File "/usr/local/google_appengine/google/appengine/tools/devappserver2/module.py", line 884, in _handle_request
environ, wrapped_start_response)
File "/usr/local/google_appengine/google/appengine/tools/devappserver2/request_rewriter.py", line 314, in _rewriter_middleware
response_body = iter(application(environ, wrapped_start_response))
File "/usr/local/google_appengine/google/appengine/tools/devappserver2/module.py", line 1297, in _handle_script_request
request_type)
File "/usr/local/google_appengine/google/appengine/tools/devappserver2/module.py", line 1262, in _handle_instance_request
request_type)
File "/usr/local/google_appengine/google/appengine/tools/devappserver2/instance.py", line 371, in handle
raise CannotAcceptRequests('Instance has been quit')
CannotAcceptRequests: Instance has been quit
(nonrel)[email protected]:~/project/flogin$ python manage.py runserver
INFO 2015-08-11 16:06:54,606 sdk_update_checker.py:229] Checking for updates to the SDK.
INFO 2015-08-11 16:06:55,511 sdk_update_checker.py:257] The SDK is up to date.
INFO 2015-08-11 16:06:55,633 api_server.py:205] Starting API server at: http://localhost:60055
INFO 2015-08-11 16:06:55,847 dispatcher.py:197] Starting module "default" running at: http://127.0.0.1:8080
INFO 2015-08-11 16:06:55,847 admin_server.py:118] Starting admin server at: http://localhost:8000
INFO 2015-08-11 16:06:58,966 __init__.py:52] Validating models...
ERROR 2015-08-11 16:06:59,045 wsgi.py:263]
Traceback (most recent call last):
File "/usr/local/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "/usr/local/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
handler, path, err = LoadObject(self._handler)
File "/usr/local/google_appengine/google/appengine/runtime/wsgi.py", line 96, in LoadObject
__import__(cumulative_path)
File "/home/apurva/project/flogin/djangoappengine/main/__init__.py", line 66, in <module>
validate_models()
File "/home/apurva/project/flogin/djangoappengine/main/__init__.py", line 55, in validate_models
num_errors = get_validation_errors(s, None)
File "/home/apurva/project/flogin/django/core/management/validation.py", line 34, in get_validation_errors
for (app_name, error) in get_app_errors().items():
File "/home/apurva/project/flogin/django/db/models/loading.py", line 196, in get_app_errors
self._populate()
File "/home/apurva/project/flogin/django/db/models/loading.py", line 75, in _populate
self.load_app(app_name, True)
File "/home/apurva/project/flogin/django/db/models/loading.py", line 97, in load_app
app_module = import_module(app_name)
File "/home/apurva/project/flogin/django/utils/importlib.py", line 42, in import_module
__import__(name)
ImportError: No module named oauth2_provider
Cependant, je ne suis pas sûr de savoir comment ajouter des bibliothèques externes à mon projet. Alors que mon django-nonrel le reconnaît. J'ai aussi essayé la documentation de Google sur la façon de à savoir
Ajout de packages tiers à la demande
Vous pouvez ajouter une bibliothèque tierce à votre demande, tant qu'il est mis en œuvre "pur Python" (pas d'extensions C) et sinon fonctions dans l'environnement d'exécution App Engine. Le moyen le plus simple pour gérer cela est avec un répertoire ./lib.
Créez un répertoire nommé lib dans votre répertoire racine d'application:
mkdir lib raconter votre application comment trouver les bibliothèques dans ce répertoire, créer (ou modifier) un fichier nommé appengine_config.py dans la racine de votre projet, puis ajouter ces lignes:
de fournisseur d'importation google.appengine.ext
ajouter £ toutes les bibliothèques installées dans le dossier « lib ». vendor.add ('lib') Utilisez pip avec l'option -t lib pour installer les bibliothèques dans ce répertoire:
$ pip install -t lib gcloud
Remarque: pip version 6.0.0 ou supérieure est requis pour que le vendeur fonctionne correctement. Astuce: le fichier appengine_config.py ci-dessus suppose que le répertoire en cours de fonctionnement est . Dans certains cas, tels que tests unitaires, le répertoire de travail actuel peut être différent. Pour éviter les erreurs , vous pouvez explicitement passer dans le chemin d'accès complet au dossier lib en utilisant vendor.add (os.path.join (os.path.dirname (os.path.realpath (fichier)), 'lib'))
ne fonctionnait pas non plus.
Je ne comprends pas la référence à Django dans le répertoire de votre projet. django-nonrel * remplace * Django, et quelle est la différence entre le répertoire de votre application et celui de votre projet? –
Bien Django est le dossier django-nonrel. Le répertoire de l'application est après avoir exécuté la commande que j'ai mentionné qui crée l'application et le répertoire du projet est le répertoire qui contient l'application. @DanielRoseman –