Bagaimana cara menjalankan program Python secara langsung?

13

Bagaimana cara menjalankan program Python secara langsung?

Saya telah membuat file .py (katakanlah, mnik.py ) di gedit. Ini berjalan lancar di terminal.

Perintah pergi

python3 mnik.py

Tetapi setiap kali saya mengklik file itu dibuka dengan gedit. Saya tidak dapat menjalankannya secara langsung dengan mengklik.

Apa yang harus dilakukan?

Priyadarshi Paul
sumber
4
@kasperd Mengetik python3pada baris perintah dengan argumen adalah cara terbaik untuk menjalankan skrip python. Ini sebenarnya cara termudah untuk menjalankan program yang membutuhkan terminal dan argumen (seperti banyak skrip saya sendiri, tetapi juga program seperti mercurial, sphinx). Peduli untuk menjelaskan mengapa apa yang telah saya lakukan selama 20 tahun lebih bukan cara yang tepat?
Anthon
3
@kasperd Skrip atau program Python tertulis yang benar tidak harus memiliki garis shebang. Jika tidak, itu masih berupa skrip Python dalam segala hal. Script itu tidak bisa dijalankan oleh dari Linux shells dalam bentuk tulisan tangan yang Anda sukai. Ada juga lingkungan yang tidak memerlukan skrip Python untuk memiliki garis shebang sama sekali dan memungkinkan mereka untuk memulai skrip dengan mengklik ganda.
Anthon
1
@kasperd Apa yang dibutuhkan kernel agar skrip Python dapat dijalankan ./scriptnametidak memvalidasi klaim Anda bahwa menjalankan skrip dari commandline dengan menggunakan python3. Ada berbagai cara menjalankan skrip python dan melakukan python3 ./mnik.pyjuga merupakan cara yang tepat untuk melakukan sesuatu, hanya saja berbeda (dan setidaknya Anda mendapatkan python3 seperti itu dan bukan python2 karena lebih mungkin dengan jawaban terbanyak sejauh ini)
Anthon
1
Menggunakan <bahasa> <script> adalah cara yang benar - benar valid dan diterima untuk menjalankan skrip. Menyarankan itu adalah praktik yang buruk harus disukai.
Jacob Vlijm

Jawaban:

26

Ada dua hal yang dibutuhkan.

  1. Sebuah skrip harus memiliki #!baris yang memberitahukan OS mana yang akan digunakan juru bahasa. Dalam kasus Anda, baris pertama Anda dalam kode harus#!/usr/bin/env python3
  2. Anda perlu membuka manajer file, pergi ke Edit -> Preferences -> Behavior, dan pilih apa yang harus dilakukan dengan file yang dapat dieksekusi

    masukkan deskripsi gambar di sini

    1. Terakhir, pastikan file Anda sendiri benar-benar telah menetapkan izin yang dapat dieksekusi. Di terminal yang dapat Anda lakukan chmod +x /path/to/script.pydan di GUI, klik kanan pada file dan ubah Properties -> Izin

    masukkan deskripsi gambar di sini

    masukkan deskripsi gambar di sini

Perhatikan tentang garis shebang

Baris pertama disebut garis shebang dan harus dimulai dengan #!; apa pun yang terjadi selanjutnya adalah nama penerjemah yang akan membaca kode Anda. Jika Anda menggunakan python3Anda bisa menggunakan salah satu #!/usr/bin/python3atau #!/usr/bin/env python3untuk portabilitas. Jika Anda tidak menggunakan kode yang khusus untuk versi python - cukup gunakan#!/usr/bin/env python

Catatan pada output skrip:

Jika skrip Anda mencetak keluaran ke konsol, itu harus memiliki jendela terminal, atau sebagai alternatif menggunakan dialog GUI seperti zenity. Lebih suka menggunakan Run in Terminalopsi jika Anda ingin melihat kode. Jika Anda ingin skrip melakukan sesuatu tanpa melihat keluaran konsol - gunakan Runopsi.

masukkan deskripsi gambar di sini

Selain itu, jika Anda memiliki parameter baris perintah, seperti sys.argv[1]dalam skrip, Anda tidak dapat mengaturnya kecuali Anda memiliki jendela terminal terbuka.

Sergiy Kolodyazhnyy
sumber
1
@PriyadarshiPaul Itu sama dengan Filesprogram pada peluncur. Di windows-spoke yang akan menjadi file explorer atauMy Computer
Sergiy Kolodyazhnyy
@PriyadarshiPaul ada nautilusdi Terminal
grooveplex
3
#!/usr/bin/env pythonakan memanggil Python2 di sebagian besar sistem Ubuntu. Meskipun Anda dapat membuat skrip Python yang ditulis untuk Python3 kompatibel dengan Python2, saya tidak akan berasumsi bahwa OP telah melakukannya. #!/usr/bin/env python3tampaknya peristiwa yang lebih tepat
Anthon
1
Dan mengapa kita membawa Arch Linux di sini? Mungkin saya akan sedikit menjengkelkan, tapi kita berbicara Ubuntu di sini. Di Ubuntu secara default python ditautkan ke python2.7 Jika Anda mengembangkan perangkat lunak, Anda mungkin harus mengetahui tautan mana, jika Anda menggunakan sesuatu selain versi default OS Anda, kemudian tentukan secara eksplisit. Tentu, kami dapat memenuhi setiap pertanyaan individu, tetapi untuk menangis dengan suara keras - jika Anda kode, maka lakukan dengan benar.
Sergiy Kolodyazhnyy
3

Anda harus meletakkan lokasi program untuk mengeksekusi kode Anda pada baris pertama dan kemudian Anda perlu mengatur skrip untuk dijalankan sebagai yang dapat dieksekusi dengan mengubah izinnya. Ini mengasumsikan Anda meluncurkan aplikasi Anda dari terminal atau skrip lain.

Temukan instalasi Python Anda

$ which python
/usr/bin/python

Tambahkan lokasi program ke baris teratas program Anda dengan tanda #!di depan

#!/usr/bin/python

# Python code goes here....

Setel skrip Python untuk memiliki hak eksekusi

$ chmod 700 test.py

Sekarang Anda dapat menjalankan skrip secara langsung

$ ./test.py

Daftar kode untuk test.py

#!/usr/bin/python

print "test"
Yusuf
sumber
2

Jika Anda ingin menjalankan program ini tanpa mengetik python3 mnik.pyAnda harus membuat skrip dapat dieksekusi dan pastikan yang python3digunakan untuk menjalankannya.

Yang pertama bisa Anda lakukan dengan menjalankan

 chmod +x mnik.py

yang kedua dapat Anda lakukan dengan menambahkan sebagai baris pertama skrip sebuah baris shebang yang memanggil python3 . Pada semua sistem Ubuntu yang telah saya gunakan dengan python3, Anda bisa mendapatkan python3 dengan menambahkan baris ini di bagian atas:

#!/usr/bin/env python3

Setelah dua perubahan itu, Anda dapat mengetik /path/to/mnik.py, ./mnik.pyatau hanya mnik.py(yang terakhir mengharuskan skrip berada di PATH Anda).

Jika Anda membuat perubahan ini Anda mungkin juga ingin mempertimbangkan mengubah nama mnik.pyuntuk mnik, yang praktek umum dengan paket Python dengan perintah yang diterbitkan pada PyPI.

Anthon
sumber
ok, semua ini sekarang tidak berfungsi
Priyadarshi Paul
Apa itu "ok"? Apa yang dimaksud dengan "ini"?
Anthon
Dikatakan ** usr / bin / env: bad interpreter: Tidak ada file atau direktori seperti itu **
Priyadarshi Paul
Setidaknya ada yang /hilang di depan sana. Tolong jelaskan apa "Ini" dalam komentar Anda. Apakah itu bash shell? Apakah ini windows Command.com? Dari apa Anda menjalankan program dan dengan sintaks perintah apa?
Anthon