2017-10-20 12 views
0

Je travaille sur un projet Python dans PyCharm. Pour un fichier je voudrais tester des parties du code en utilisant la console Python. Le problème est que le code contient une méthode principale (utilisée pour le débogage et l'exécution) comme ceci:PyCharm: exécuter en console Python

if __name__ == "__main__": 
    print("with main") 
else: 
    print("no main") 

Lorsque j'exécute ce code dans la console Python (en utilisant le menu contextuel de PyCharm), la première partie de la si volonté être exécuté. Je m'attendais à l'autre partie puisque je ne démarre pas le script en utilisant une configuration d'exécution.

Peut-être pouvez-vous m'aider à faire cela.

+0

Mais c'est exactement ce que vous voulez exécuter dans la console python, non? Il se comporte exactement comme un programme. Pourquoi ne l'aimez-vous pas? – mrCarnivore

+0

Oui et non. Si je lance le script depuis le shell ou via la configuration de PyCharm, j'ajoute des arguments que j'extrais et que je gère dans la partie if. Mais si je veux tester le script dans la console, je n'ai aucun moyen de spécifier les arguments de la ligne de commande. C'est pourquoi j'ajouterais des valeurs par défaut à l'autre partie. – Matthias

+0

Bon point ... Je n'ai jamais eu ce problème. Si cela fonctionnait, cela aurait été une bonne solution ... – mrCarnivore

Répondre

0

Créer un fichier comme not_main_start.py avec une seule ligne import main.py (Je suppose que c'est votre fichier principal). Exécutez ensuite ce fichier. La sortie devrait montrer no main. __name__ serait le nom __main__ seulement si vous appelez directement ce fichier. Si vous l'utilisez comme module, il aura le nom du module.

+0

Idée intéressante. Mais finalement, vous voulez analyser les arguments de la ligne de commande dans le fichier principal, puis appeler les méthodes de l'autre fichier. Donc, votre importation est l'inverse. – Matthias