2017-04-21 1 views
-1

Par la réponse acceptée à ce question, j'essaie d'utiliser pdb pour le débogage.Comment puis-je démarrer pdb pour Python 3.6 sous Windows?

Je peux commencer le débogueur avec succès avec cette syntaxe:

python -m pdb program.py 

mais préfère l'autre option prévue dans la réponse (ce qui ne fonctionne pas):

pdb program.py 

est la deuxième syntaxe prise en charge sur Windows? Si oui, comment puis-je le faire fonctionner? L'erreur est la norme "non reconnue comme une commande interne ou externe, un programme exécutable ou un fichier séquentiel."

+0

Vous pouvez créer un fichier batch appelé 'pdb' qui exécuterait' python -m pdb '. – ForceBru

+0

Merci. La syntaxe 'pdb program.py' n'est-elle pas supportée? – arbitrarystringofletters

+0

bien, cela vous donne une erreur. Peut-être y a-t-il des prérequis pour que cela fonctionne correctement. – ForceBru

Répondre

1

Cela ne fonctionne pas parce que vous n'avez pas une association de .py avec l'exécutable Python.

Le fichier pdb.py est dans votre répertoire mondial des paquets (ce qui explique pourquoi python -m pdb est capable de le trouver), malheureusement, quand vous faites pdb program.py Windows fait ce qui suit:

  1. recherche dans le répertoire que vous avez exécuté le commande dans un fichier appelé pdb.{com|bat|exe} et tout ce qui est identifié dans PATHEXT; sinon, il vérifie les associations de fichiers (vous pouvez les lister en tapant FTYPE) pour que les exécutables s'exécutent pour une extension de fichier spécifique.

  2. Répète # 1 pour chaque répertoire qui fait partie de PATH

Sur votre système, vous n'avez pas associé l'extension .py avec un exécutable, ainsi Python ne sait pas comment exécuter le fichier.

Pour vous simplifier la vie, utilisez la syntaxe python3 -m pdb; Non seulement cela fonctionnera, mais il sera également plus portable sur toutes les plateformes.

+0

Merci. Tu avais exactement raison! J'ai réussi à faire fonctionner les choses en ajoutant '.py' à la variable' PATHEXT'. Cependant, je pense que je vais utiliser la syntaxe que vous suggérez, car cela fonctionne sans aucune configuration supplémentaire. – arbitrarystringofletters