Jalankan skrip Python tanpa secara eksplisit memanggil `python`

36

Saya menggunakan Linux Debian.

Saya bertanya-tanya apakah ada cara untuk mengkonfigurasi untuk menjalankan semua skrip Python di terminal dengan mengetik script.py(bukan python script.py).

pengguna2018084
sumber

Jawaban:

56

Ada dua hal yang perlu Anda lakukan:

  • Pastikan file tersebut dapat dieksekusi: chmod +x script.py
  • Gunakan shebang untuk membiarkan kernel tahu juru bahasa apa yang digunakan. Baris teratas skrip harus dibaca:

    #!/usr/bin/python
    

    Ini mengasumsikan bahwa skrip Anda akan berjalan dengan python default. Jika Anda membutuhkan versi tertentu, cukup tentukan di shebang:

    #!/usr/bin/python2.7
    

Sekarang Anda dapat mengetik:

    ./script.py

jika skrip ada di direktori Anda saat ini, atau:

    script.py

jika lokasi skrip berada di PATH Anda, atau:

    path/to/script.py

jika tidak.

Paul
sumber
32
Secara umum itu adalah ide yang lebih baik untuk digunakan #!/usr/bin/env python, jika pengguna memiliki build lokal python (misalnya, dalam /usr/local/bin) yang mereka lebih suka menjalankan skrip dengannya.
sapi
3
@sapi Tidak menurut Debian bukan, setidaknya dalam kebijakan dev mereka. Jika Anda menulis skrip Anda sendiri, Anda bisa menerima risikonya, hanya saja lebih eksplisit. Jika Anda ingin yang lokal, pilih di shebang.
Paul
3
Bukannya bashmembaca file saat mengeksekusi ...
souser12345
@progo Ini benar - perhatikan bahwa jika Anda melihat jawaban yang menurut Anda akan mendapat manfaat dari perbaikan, silakan dan edit, perbaikan selalu diterima
Paul
Dan Anda harus melakukannya ./script.py, bukanscript.py
Paul Draper
32

Di linux Anda cukup menggunakan hashbang (alias shebang). Tambahkan baris

#!/usr/bin/python

jika Anda ingin menjalankan penerjemah python default.

#!/path/to/python[x.x]

untuk menggunakan beberapa versi tertentu, atau

#!/usr/bin/env python

Jika Anda ingin lingkungan menemukan python untuk Anda.

Anda juga akan diminta untuk membuat skrip dapat dieksekusi

chmod +x script[.py] 
Gaurav Joseph
sumber
1

Menggunakan:

#!/usr/bin/env python

Ini akan memastikan bahwa python yang diharapkan pengguna akan digunakan adalah python yang menjalankan skrip. Ini sangat penting jika pengguna menggunakan virtualenv untuk memiliki versi python khusus dalam lingkungan tertentu.

Cory Klein
sumber
0

Gunakan garis shebang di atas skrip Anda seperti di bawah ini:

! / usr / bin / python

Perbarui versi python yang tepat di mana Anda ingin menjalankan skrip. misal Untuk python 3.6-nya

! /usr/bin/python3.6

untuk penerjemah default

! / usr / bin / python

Catatan: Pastikan skrip memiliki izin yang dapat dieksekusi.

Suraj Bora
sumber