6
votes

Débogage GAE dans les outils Python pour Visual Studio

Je suis capable d'exécuter mon application Google App Engine Webapp2 à l'aide de Outils Python pour Visual Studio 2012 sans problèmes après avoir suivi ce tutoriel , et même Entrez dans le code d'initialisation du serveur, mais je ne peux pas l'obtenir de casser à obtenir ou de poster des méthodes lorsque le site Web est chargé, similaire à ce qui est affiché dans cette vidéo avec la méthode principale () code>. Quand je pause le débogueur, il finit toujours par la boucle infinie suivante dans wsgi_server.py:

Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3003, in _HandleRequest
    self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2862, in _Dispatch
    base_env_dict=env_dict)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 719, in Dispatch
    base_env_dict=base_env_dict)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1797, in Dispatch
    self._module_dict)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1648, in ExecuteCGI
    app_log_handler = app_logging.AppLogsHandler()
  File "C:\Python\lib\logging\__init__.py", line 660, in __init__
    _addHandlerRef(self)
  File "C:\Python\lib\logging\__init__.py", line 639, in _addHandlerRef
    _releaseLock()
  File "C:\Python\lib\logging\__init__.py", line 224, in _releaseLock
    _lock.release()
  File "C:\Python\lib\threading.py", line 138, in release
    self.__count = count = self.__count - 1
  File "C:\Python\lib\threading.py", line 138, in release
    self.__count = count = self.__count - 1
  File "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Python Tools for Visual Studio\2.0\visualstudio_py_debugger.py", line 557, in trace_func
    return self._events[event](frame, arg)
  File "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Python Tools for Visual Studio\2.0\visualstudio_py_debugger.py", line 650, in handle_line
    if filename == frame.f_code.co_filename or (not bound and filename_is_same(filename, frame.f_code.co_filename)):
  File "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Python Tools for Visual Studio\2.0\visualstudio_py_debugger.py", line 341, in filename_is_same
    import ntpath
  File "C:\Python\lib\ntpath.py", line 8, in <module>
    import os
  File "C:\Python\lib\os.py", line 120, in <module>
    from os.path import (curdir, pardir, sep, pathsep, defpath, extsep, altsep,
ImportError: cannot import name curdir


2 commentaires

J'utilise Python 2.7.5 donc apparemment pas besoin de faire rouler. Au lieu de cela, j'essaierais: a) Mise à jour de Python 2.7.5 si vous utilisez une version précédente. b) Installez Python dans le répertoire Standard C: \ Python27 au lieu de C: \ Python. Configurez de nouveaux chemins en conséquence. c) Exécutez le projet de différentes manières (sans studio visuel, à l'aide de la fenêtre interactive ...). L'erreur que vous obtenez semble être assez "basique", certaines fonctionnalités intégrées qui ne peuvent pas être importées, donc jouer avec des chemins et des propriétés de projet. De plus, dev_appserver.py est référencé dans l'erreur, êtes-vous sûr que vous utilisez Old_Dev_AppServer.py?


Votre raisonnement est assez solide. Je suis sûr que j'utilise old_dev_appserver.py . Je vais essayer de jouer avec cela en fonction de vos suggestions, quand j'ai un peu de temps.


4 Réponses :


2
votes

Ceci est un problème connu avec Google App Moteur pour Python: Actuellement, le débogage ne fonctionne aucun débogueur. Voir ici , ici et ici .


0 commentaires

2
votes

Il y a une solution de contournement, mais je ne sais pas d'obtenir ce travail pour les outils Python pour contre la théorie, cela devrait être possible.

https://groups.google .com / Forum / #! Topicsearchin / Google-Appengine / BOA / Google-Appengine / -M00QZ4VC7U

Vous auriez probablement besoin de ce guide pour le faire fonctionner:

https://docs.google.com/document/ D / 1CCSARIIIWCLGBD3OWMUKSROHHDFBFFBROWYVWOHL0ZXN4 / EDIT # Rubrique = h.fj44xnkhr0gr


2 commentaires

Cela ne vaut pas la peine pour moi, mais merci pour l'information. Espérons que Google sortira avec un correctif bientôt.


Vous pouvez également essayer d'utiliser l'ancien dev_appserver. Cela pourrait fonctionner.



1
votes

J'utilise l'ancien Dev_AppServer pour le débogage et cela fonctionne pour moi dans un scénario similaire à celui de la vôtre. J'ai aussi eu un tas d'exceptions, mais j'ai pu simplement ignorer tous les instructions suivant les instructions sur Ce lien (j'ai également dû ajouter des" exceptions "pour certaines exceptions ValueError).

Ce sont mes propriétés de projet:

onglet général:

Fichier de démarrage: C: \ Fichiers de programme (x86) \ Google \ Google_appengine \ Old_Dev_AppServer.py

Répertoire de travail: ./

Application Windows: (non cochée)

Interprète: Python 2.7

onglet de débogage

Chemins de recherche: C: \ Fichiers de programme (X86) \ Google \ Google_appengine

Arguments de script: - Utilisez_sqlite ./< / code>

Arguments d'interprétation: (blanc)

Chemin d'interprète: C: \ python27 \ python.exe

Lorsqu'il n'y a pas besoin de points d'arrêt, je gère le projet avec le projet de débogage> Exécution dans Python Interactive. De cette façon, vous n'obtenez pas la fenêtre de la console inutile.


1 commentaires

Merci, c'est utile, mais j'ai toujours des problèmes. S'il vous plaît voir la modification à mon message d'origine.



5
votes

Mise à jour n ° 2

gcloud aperçu code> obsolète h3>

Son retour à la méthode d'origine P>

Mise à jour # 1 H3>

gcloud aperçu code> (c'est plus récent et plus simple), h3>

Remplacez ceci: p>

Général-> Fichier de démarrage: P>

DEBUG->Attach to Process <Ctrl+Alt+P>
Qualifier: tcp://joshua@localhost:5678 <ENTER>


1 commentaires

..1. Assurez-vous que vous avez authentifié avant de suivre ces instructions: GCloud Authentifiez-vous ..2. Assurez-vous que l'exécution de l'application à partir de la ligne de commande fonctionne: GCloud Aperçu de l'application Exécuter app.yaml ..3. GCloud Config Set Project YourprojectName