La question est plutôt simple mais pas de réponse par la recherche. Comment puis-je déterminer dans un script python si ce script est importé en tant que module ou exécuté en tant que script? Y a-t-il une différence en python? Le problème est, que je veux évaluer les paramètres de ligne de commande seulement si exécuté en tant que script, mais pas si le module est seulement importé pour l'utiliser dans un autre script. (Je veux être capable d'utiliser un script à la fois comme bibliothèque et comme programme.) J'ai peur que la manière de vanille soit de construire la lib et un deuxième script qui l'utilise, mais j'aimerais avoir une deuxième option pour un petit outil/libs.comment puis-je déterminer si un script python est importé en tant que module ou exécuté en tant que script?
17
A
Répondre
29
de python docs:
Lorsque vous exécutez un module Python avec
python fibo.py
le code dans le module sera exécuté, comme si vous l'avez importé, mais avec le
__name__
défini sur"__main__"
. Cela signifie qu'en ajoutant ce code à la fin de votre module:
if __name__ == '__main__':
# Running as a script
vous pouvez rendre le fichier utilisable en tant que script, ainsi que d'un module importable, car le code qui parse la ligne de commande ne fonctionne que Si le module est exécuté en tant que fichier "principal"
Questions connexes
- 1. En Perl, comment savoir si mon fichier est utilisé en tant que module ou en tant que script?
- 2. Puis-je exécuter un script Python en tant que service?
- 3. Le script PHP exécuté en tant que tâche planifiée se bloque - aide!
- 4. Exécution d'un script SQL stocké en tant que ressource
- 5. CASCADE Delete est-il exécuté en tant que transaction?
- 6. DotNetNuke option sql 'Exécuter en tant que script'
- 7. Projet d'installation Visual Studio - exécuté en tant que compte système
- 8. Interprète Python en tant que classe C++
- 9. Exécuter une chaîne en tant que commande en python
- 10. .NET en tant que client, Java en tant que serveur
- 11. Java: exécuté en tant qu'administrateur
- 12. Choisir la base de données FILEGROWTH en tant que% ou en tant que Taille fixe
- 13. Affichage des fenêtres d'un processus s'exécutant en tant que compte système ou en tant que service
- 14. Comment puis-je déterminer si le script est en cours d'exécution dans un appel système ou qx en Perl?
- 15. Comment puis-je obtenir mon script post-commit de git (msysgit on windows) pour appeler mon script python en tant que python plutôt que bash?
- 16. Comment compiler/empaqueter un script IE7PRO en tant que plugin IE?
- 17. Déterminer si un script ruby est déjà en cours d'exécution
- 18. MySql: UNION n'est pas exécuté lorsqu'il est exécuté en tant que vue
- 19. Modification de XML en tant que dictionnaire en python?
- 20. Script Python exécuté avec Makefile
- 21. Comment exécuter un script en tant que root sur Mac OS X?
- 22. Exécuter un projet Python dans Eclipse en tant que root
- 23. linux - exécuter le script php depuis la ligne de commande quand php est installé en tant que module apache
- 24. Est-ce que je devrais stocker en tant que "chaînes" ou "entiers" en php et mysql?
- 25. Appel d'un script à partir d'une racine setuid C - le script ne s'exécute pas en tant que root
- 26. Sortie en tant que tableau
- 27. UserControl en tant que tabItem
- 28. Comment passer une méthode en tant que paramètre dans Python
- 29. Est-ce que SqlDataReader stocke tout en tant que chaîne?
- 30. appostrophes venir en tant que
cela semble légèrement magique mais est en fait un idiome complètement standard. Vous serez aussi \ _ \ _ main \ _ \ _ si vous êtes un module appelé par 'python -m somemodule'. – bobince