2009-09-07 14 views
17

Soru oldukça basittir, ancak arama ile cevaplanmamıştır. Bir python komut dosyasında, bu komut dosyasının bir modül olarak alındığını veya komut dosyası olarak çalıştırılıp çalıştırılmadığını nasıl belirleyebilirim? Python'da hiç fark var mı?Bir python komut dosyasının modül olarak alındığını mı yoksa komut dosyası olarak mı çalıştırıldığını nasıl belirleyebilirim?

Sorun şu ki, komut satırı parametrelerini yalnızca bir komut dosyası olarak çalıştırılıyorsa değerlendirmek istiyorum, ancak modül yalnızca başka bir komut dosyasında kullanmak için içe aktarılıyorsa değil. (Bir kitaplığı hem kitaplık hem de program olarak kullanabilmeyi istiyorum.) Korkarım ki, liberi ve onu kullanan ikinci bir betik oluşturmak için vanilya yolu olurdu, ama küçük bir araç için ikinci bir seçeneğe sahip olmak isterim./kütüphanelerini. piton docs den

cevap

29

:

Eğer

piton fibo.py

modülünde kod yürütülecektir

ile bir Python modülü çalıştırdığınızda, onu ithal sadece sanki ancak __name__ ile "__main__" olarak ayarlayın. Komut satırını ayrıştırır kodu yalnızca çalışır çünkü

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

Eğer bir komut dosyası yanı sıra importable modül olarak kullanılabilir dosyası yapabilirsiniz: Bu senin modülün sonunda bu kodu ekleyerek anlamına gelir Eğer modül “ana” dosya olarak çalıştırılırsa,

+3

bu biraz büyü gibi görünüyor ama aslında tamamen standart bir deyim. 'Python -m somemodule' tarafından çağrılan bir modül iseniz de \ _ \ _ main \ _ \ _ olacaktır. – bobince

İlgili konular