7
votes

Aucun module nommé des avertissements lors du démarrage de Gae à l'intérieur de virtualenv localement

J'essaie d'exécuter mon application GAE localement dans un environnement virtuel.

J'ai suivi ces deux articles [1] , [2] comme référence à la configuration, mais lorsque je source evn / bin / activer code>, puis dev_appserver.py. code>, il continue à élever le Erreur de importerror: Aucun module nommé des avertissements code> (plus de trace ci-dessous) p>

surprenant, si je le démarre sans activer virtual env en exécutant simplement dev_appserver.py. code > À l'intérieur de la racine du projet, il fonctionne sans aucun problème. P>

existe une solution ou une solution de contournement pour ce problème? P>

INFO     2017-08-31 14:09:36,293 devappserver2.py:116] Skipping SDK update check.
INFO     2017-08-31 14:09:36,354 api_server.py:313] Starting API server at: http://localhost:52608
INFO     2017-08-31 14:09:36,357 dispatcher.py:226] Starting module "default" running at: http://localhost:8080
INFO     2017-08-31 14:09:36,359 admin_server.py:116] Starting admin server at: http://localhost:8000
Traceback (most recent call last):
  File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/_python_runtime.py", line 103, in <module>
    _run_file(__file__, globals())
  File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/_python_runtime.py", line 97, in _run_file
    execfile(_PATHS.script_file(script_name), globals_)
  File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/runtime.py", line 192, in <module>
    main()
  File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/runtime.py", line 172, in main
    sandbox.enable_sandbox(config)
  File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py", line 326, in enable_sandbox
    __import__('%s.threading' % dist27.__name__)
  File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/google/appengine/dist27/threading.py", line 11, in <module>
    import warnings
  File "/usr/local/share/google/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/sandbox.py", line 1076, in load_module
    raise ImportError('No module named %s' % fullname)
ImportError: No module named warnings
ERROR    2017-08-31 14:09:39,070 instance.py:280] Cannot connect to the instance on localhost:52366


3 commentaires

Avez-vous pu résoudre ce problème? Je suis également confronté au même problème et j'essaie encore 2 jours sans chance


@vinitpayal pas vraiment. J'ai sauté virtuel env: '(


Cochez cette solution: Stackoverflow.com/a/58287365/1767847


3 Réponses :


4
votes

Toutes les dépendances de Environnement standard Les applications GAE (qui ne sont pas fournies par GAE) doivent être installées dans l'application elle-même, non sur votre système local. Voir Utilisation de bibliothèques tierces .

Depuis que GAE ne se soucie pas de vos bibliothèques système locales (en plus de l'installation de base Python 2.7 nécessaire pour exécuter le serveur de développement), à l'aide d'un Virtualenv pour le développement Standard env GAE applications n'a pas beaucoup de sens.

L'utilisation du Virtualenv comme suggéré par les articles que vous avez mentionnés peut réellement causer des problèmes:

  • Les bibliothèques de Python locales peuvent interférer avec les bibliothèques équivalentes de GAE-Runtime fourni (du SDK) lors de l'exécution locale (je soupçonne que c'est d'une manière ou d'une autre ce que vous vivez)
  • au moment du déploiement Le contenu du répertoire lib (qui inclut tous les packages de site de votre installation de Python) sera téléchargé sur GAE, ce qui entraîne potentiellement des affrontements avec les bibliothèques GAE Runtime fourni ou dépassant la quota de fichier d'application.

    Donc, ma suggestion est de supprimer Virtualenv (qui, d'une certaine manière, vous avez fait lorsque vous avez sauté l'activation Virtualenv) et suivez la documentation officielle à la place.


7 commentaires

Je suis d'accord avec votre analyse, mais la documentation officielle indique d'utiliser un virtualV! cloud.google.com/appengine/docs/ Standard / Python / Get-Star Ted / ...


Si vous l'utilisez comme ça oui. Mais les articles référencés dans la question ne sont pas.


Je ne suis pas sûr de ce que tu veux dire. Je l'ai utilisé de la manière décrite dans la documentation officielle et j'ai eu le même problème que l'OP.


Eh bien, essayez sans cela. IMHO C'est juste une couche supplémentaire pour déboguer. La seule raison pour laquelle j'utiliserais ce serait si ma version de Python par défaut ne serait pas celle nécessaire pour GAE. Mais dans mon cas, ce n'est pas le cas. Dans le cas de l'OP - Courir la même application sans Virtualenv semblait mieux fonctionner.


La documentation officielle est fausse à mon avis. Je ne sais pas comment une telle erreur a été faite mais au moins sur OSX si vous le suivez, vous obtiendrez le même problème que OP.


Une autre pensée: je suis inhabituelle si PIP produise les mêmes résultats de manière fiable - les packages PYPY sont mis à jour de temps en temps. Quelque chose a peut-être changé depuis la rédaction du doc. Sans rapport avec virtualenv.


C'est possible. J'ai donné des commentaires sur Google sur les documents officiels, verront ce qui se passe. Comme vous, je ne comprends pas vraiment le point d'utiliser un environnement virtuel si le serveur DEV tire toutes les dépendances du répertoire de Libs, mais je manque peut-être quelque chose.



1
votes

J'ai eu ce problème lors de l'exécution de deux projets appengine dans des répertoires distincts à la fois à l'aide de dev_appserver.py dans un virtualenv.

J'ai trouvé que cela fonctionne correctement si j'utilise plutôt des chemins absolus.


0 commentaires

19
votes

Je l'ai résolu en supprimant à partir du skip_files de mon .yaml A - VENV ligne. VENV est mon dossier Virtualenv et j'ai toujours un - ^ VENV $ ligne. Au cas où cela aide quelqu'un; -)


2 commentaires

Je ne sais pas pourquoi cela n'a pas plus de votes. Si quiconque trouve ce fil via Google, c'est la bonne réponse.


@ Solution Valentin-Coudert aide en fait mais pas sûr de savoir pourquoi cela fonctionne-t-il, je pensais que Skip_Files n'est utilisé que tout en déployant l'application sur GAE. En outre, cela signifie-t-il que nous devrions déployer un dossier Venv avec le code à Gae?