.Py uzantısı olmadan terminalden python betiği çalıştırma


14

Bir Python komut aramak istediğiniz script.py basitçe yazarak terminali gelen komut . Mümkün mü? Öyleyse nasıl?

Ben betiğin üstüne #! / Usr / bin / env python ekleyerek python script.py yazmayı önleyebilirim , ama hala betiği çalıştırmak için .py sonekini eklemek zorundayım .

Yanıtlar:


21

Unix / Linux dosya sistemleri, pencerelerin yaptığı gibi uzantılara güvenmez. .pyÇalıştırmak için bir dosyanın sonuna gerek yoktur .

Dosyayı yorumlayıcı ile çağırarak çalıştırabilirsiniz:

python ScriptFile

Veya çalıştırılabilir olarak işaretleyerek ve ilk satırdaki yorumlayıcıyı tanımlayarak (örn. #!/usr/bin/python).

Dosyayı şu ile yürütemiyorsanız:

/Path/to/ScriptFile

izinlerini kontrol et

ls -l ScriptFile

Yürütülebilir bayrağı eklemeniz gerekebilir, chmodböylece sizin için yürütülür.

Düzenli olarak özel komut dosyaları kullanıyorsanız, bunları sakladığınız dizinin PATHortam değişkenine eklendiğinden emin olmak isteyebilirsiniz .


1
Dosya ~ / workspace / python içinde. Yoluma ~ / workspace / python ekledim, sudo chmod a + x script.py "komutunu çalıştırdım. *
Script.py

2
Unix / linux'da her şey bir dosyadır ve dosya adına yanıt verir. Script.py'yi komut dosyası olarak çağıramazsınız. Dosyayı script.py'dan komut dosyasına yeniden adlandırmayı deneyin; sorununuzu çözecektir.
Patrick

Üzgünüm, yanlış anladım! Her şey çözüldü, teşekkürler!
jmau5

5

.pyUzatma senaryoyu çalıştırmak için gereksizdir. Senaryoyu sadece çalıştırılabilir yapmalısın (örneğin chmod a+x scriptçalışarak) ve shebang satırını ( #!/usr/bin/env python) eklemelisin .


Patrick'in cevabı hakkındaki yorumuma bakın.
jmau5

4

Bir seçenek olarak, komut dosyanız için bir .pydosya (bir dosya) oluşturabilirsiniz:

Örneğin, bir komut dosyanız var, runme.pyböylece komut dosyasını runmekaydırmak için yeni dosya oluşturabilirsiniz :

#!/usr/bin/env python
import runme

ve daha sonra runme.pysadece runmekabuğa çağırarak işlevselliği çağırın .

Bu, çok platformlu komut dosyaları için yararlıdır, çünkü Windows platformunda , başlıkta .pyuzantı ve shebang olmadan sadece adla çağrılacak dosyaları atayabilirsiniz , ancak linux platformunda yapamazsınız ve böylece sarıcı çıkar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.