2009-09-07 35 views
17

La pregunta es bastante simple pero no responde buscando. ¿Cómo determino en un script python si este script se importa como un módulo o se ejecuta como un script? ¿Hay alguna diferencia en Python?¿cómo puedo determinar si una secuencia de comandos python se importa como módulo o se ejecuta como secuencia de comandos?

El problema es que quiero evaluar los parámetros de la línea de comandos solo si se ejecuta como un script, pero no si el módulo solo se importa para usarlo en otro script. (Quiero poder usar un guión como biblioteca y programa.) Me temo que la manera más simple sería construir el lib y un segundo guión que lo use, pero me gustaría tener una segunda opción para la pequeña herramienta./libs.

Respuesta

29

del pitón docs:

Cuando se ejecuta un módulo de Python con

pitón fibo.py

el código en el módulo será ejecutado, al igual que si ha importado que, pero con el __name__ establecido en "__main__". Esto significa que mediante la adición este código al final de su módulo:

if __name__ == '__main__': 
    # Running as a script 

Usted puede hacer que el archivo se puede usar como una secuencia de comandos, así como un módulo importable, debido a que el código que analiza la línea de comandos sólo se ejecuta si el módulo se ejecuta como el archivo "principal"

+3

, esto parece un poco mágico, pero en realidad es un modismo completamente estándar. También serás \ _ \ _ main \ _ \ _ si eres un módulo invocado por 'python -m somemodule'. – bobince

Cuestiones relacionadas