Menjalankan skrip python dari terminal tanpa ekstensi .py


14

Saya ingin memanggil skrip skrip python .py dari terminal hanya dengan mengetik skrip . Apakah ini mungkin? Jika ya, bagaimana caranya?

Saya tahu saya bisa menghindari mengetikkan python script.py dengan menambahkan #! / Usr / bin / env python ke bagian atas skrip, tetapi saya masih harus menambahkan akhiran .py untuk menjalankan skrip.

Jawaban:


21

Sistem file Unix / Linux tidak bergantung pada ekstensi seperti yang dilakukan windows. Anda tidak perlu memerlukan .pydi akhir file untuk menjalankannya.

Anda dapat menjalankan file dengan memanggilnya dengan penerjemah:

python ScriptFile

Atau dengan menandainya executable dan mendefinisikan interpreter pada baris pertama (misalnya #!/usr/bin/python).

Jika Anda tidak dapat menjalankan file dengan:

/Path/to/ScriptFile

periksa izin dengan

ls -l ScriptFile

Anda mungkin perlu menambahkan flag yang dapat dieksekusi dan chmoditu akan dieksekusi untuk Anda.

Jika Anda menggunakan skrip khusus secara teratur, Anda mungkin ingin memastikan direktori tempat Anda menyimpannya ditambahkan ke PATHvariabel lingkungan.


1
File ini dalam ~ / workspace / python. Saya telah menambahkan ~ / workspace / python ke jalur saya, saya menjalankan sudo chmod a + x script.py ", dan saya telah menambahkan baris shebang (#! / Usr / bin / env python) ke bagian atas skrip Saya dapat menjalankan skrip dengan mengetik * script.py , tetapi hanya mengetik skrip tidak berfungsi
jmau5

2
Di unix / linux semuanya adalah file dan merespons nama file-nya. Anda tidak dapat memanggil Script.py sebagai skrip. Coba ganti nama file dari script.py ke script dan itu akan memperbaiki masalah Anda.
Patrick

Maaf, saya salah paham! Semuanya terpecahkan, terima kasih!
jmau5

5

The .pyekstensi tidak perlu untuk menjalankan script. Anda hanya perlu membuat skrip dapat dieksekusi (misalnya dengan menjalankan chmod a+x script) dan menambahkan baris shebang ( #!/usr/bin/env python).


Lihat komentar saya tentang balasan Patrick.
jmau5

4

Sebagai opsi, Anda dapat membuat wrapper untuk skrip ( .pyfile):

Misalnya, Anda memiliki skrip runme.pysehingga Anda dapat membuat file baru runmeuntuk membungkus skrip:

#!/usr/bin/env python
import runme

dan kemudian memanggil runme.pyfungsionalitas hanya dengan menjalankan runmeshell.

Itu berguna untuk skrip multiplatform, karena pada platform Windows Anda dapat menetapkan .pyfile untuk dipanggil hanya dengan nama tanpa ekstensi dan shebang di header, tetapi pada platform linux Anda tidak bisa dan dengan demikian pembungkus keluar.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.