2012-03-20 22 views
8

Python kitaplık modülleri #!/usr/bin/env python ile başlamalı mı?Python kütüphane modülleri #!/Usr/bin/env python ile başlamalı mıdır?

/usr/share/pyshared'da (Python libs Debian'da saklanır) *.py'un ilk satırlarına bakıldığında, her iki dosyada, sağlama çizgisi ile başlayan ve olmayanlar var.

Bu satırı eklemek veya çıkarmak için bir neden var mı? Eğer komut bir yürütülebilir olmasını istiyorsanız

+0

BTW sadece # # python'da bir sorun var mı? – Kos

+0

@Kos: evet, işte: işe yaramıyor. En azından her yerde değil. '/ usr/bin/env' yalnızca taşınabilirlik için kullanılır. –

+1

Ayrıca, sanalenv veya diğer popüler araçlardan bazılarını kullanıyorsanız, gerçek Python yorumlayıcısının konumu değişeceğinden de. –

cevap

6

/usr/share/pyshared numaralı dosyalarda bazı dosyaların neden & bildirdiklerini açıklamak kolay değildir. Dosyaları uno.py ve pyinotify.py'dan alın. Eskide hiç bir şey yoktur ve ikincisi vardır.

  1. uno.py, diğer programlarda/komut dosyalarında alınacak ve kullanılacak bir python modülüdür. Böylece asla doğrudan komut satırından yürütülmez. Öte yandan pyinotify.py günü
  2. shebang içeriyorsa ve o (bunu bir chmod u+x çalıştırırsanız o bir yürütülebilir yapılmış olabilir) altına aşağıdaki satırı içeren görebilirsiniz:

    if __name__ == '__main__': 
        command_line() 
    

Shebang'da python ikilisini kodlayabilirsiniz, ancak diğerlerinin de belirttiği gibi, /usr/bin/env'u daha taşınabilir hale getirecektir.

0

, bu çizgiyi

+1

Bu doğrudan soruyu cevaplamaz. Lütfen cevabınızı geliştirin. – Tadeck

+0

Eğer yapmazsam, bu satırı eklemek için bir neden var mı? Üst düzeyde, sadece tanımlarda hiçbir şey yürütülebilir. –

+6

-1. Bu cevap yanlış. Bu satır bir yorumlayıcı belirtmek ve "betiği ve yürütülebilir dosyayı" yapmak için kullanılmaz. İkincisi, dosya izinlerini (UNIX'te) değiştirerek elde edilir. –

5

Bu çizgi shebang çizgidir dahil etmek gerekir. Ayrıntılar için lütfen wikipedia article'a danışın. Temel olarak, komut satırından doğrudan çalıştırılırsa dosyanın çalıştırılabileceği yorumlayıcıyı belirtir.

Doğrudan bu kabuktan çalıştırmayı planlamıyorsanız, bu satırın bir dosyanın üstüne dahil edilmesine gerek yoktur. Bazı Python modülleri (ör. Ftplib) doğrudan çalıştırdığınızda bazı işlevlere sahiptir. Bunlar üstte #! satırına sahip olacak. Çoğu böyle bir işleve sahip değildir ve bu nedenle bu hatta gerek yoktur.

İlgili konular