Bagaimana cara membuat perintah program' python ' mengeksekusi Python 3?

The python perintah program mengeksekusi Python 2. Python 3 dapat dieksekusi menggunakan python3 perintah. Bagaimana Python 3 dapat dieksekusi menggunakan python perintah?

Anda dapat menginstal paket seluruh sistem:

$ sudo apt install python-is-python3

Lihat peringatan:paket python-is-python3 di Ubuntu 20.04 - apa itu dan apa yang sebenarnya dilakukannya?

Cara aman yang sederhana adalah dengan menggunakan alias. Tempatkan ini ke ~/.bashrc atau ~/.bash_aliases berkas:

alias python=python3

Setelah menambahkan di atas dalam file, jalankan source ~/.bashrc atau source ~/.bash_aliases.

Misalnya:

$ python --versionPython 2.7.6$ python3 --versionPython 3.4.3$ alias python=python3$ python --versionPython 3.4.3

Untuk menghindari alias menggunakan command perintah bawaan:

$ command python --versionPython 2.7.6

Cara lain untuk menghindari alias adalah dengan menggunakan \ sebelum perintah.

$ \python --version Python 2.7.6

Untuk menonaktifkan alias di shell saat ini gunakan unalias perintah bawaan:

$ unalias python$ python --versionPython 2.7.6

On Ubuntu 20.04+ hanya menginstal python-is-python3 paket:

sudo apt install python-is-python3

Selain itu, Anda dapat mencegah Python 2 diinstal sebagai ketergantungan sesuatu di masa mendatang dengan apt-mark hold:

sudo apt-mark hold python2 python2-minimal python2.7 python2.7-minimal libpython2-stdlib libpython2.7-minimal libpython2.7-stdlib 

[Juni 2016] Tempat yang direkomendasikan untuk informasi tentang transisi adalah resmi Ubuntu Python page.


Dari Ubuntu wiki:

Untuk Ubuntu dan Debian, kami memiliki sedang berlangsung proyek tujuan untuk menjadikan Python 3 sebagai Default, versi Python yang disukai di distro.

Apa ini tidak berarti:

  • /usr/bin/python akan menunjuk ke Python 3. Tidak, ini tidak akan terjadi (kecuali PEP 394 advokat sebaliknya, yang diragukan untuk masa mendatang). /usr/bin/python dan /usr/bin/python2 akan menunjuk ke Python 2.7 dan /usr/bin/python3 akan mengarah ke versi Python 3 terbaru yang didukung.

  • Python 2 akan dihapus dari arsip. Tidak, ini tidak akan terjadi. Kami berharap Python 2.7 tetap didukung dan tersedia di Ubuntu untuk waktu yang cukup lama, mengingat itu PEP 373 menjanjikan dukungan pemeliharaan perbaikan bug hulu hingga 2020.

Tidak disarankan untuk mengubah tautan simbolis karena dependensi paket lainnya, tetapi mereka "memiliki tujuan proyek yang sedang berlangsung untuk menjadikan Python 3 sebagai versi Python default yang disukai di distro".


Untuk penggunaan CLI, seperti @ Radu Radeanu, Saya akan merekomendasikan menempatkan alias di pengguna ~/.bashrc, .bash_aliases file (file yang berbeda, termasuk ~/.bash_profile, dimuat setidaknya sekali, sebagian besar untuk tujuan organisasi, tetapi dapat bervariasi menurut platform). Python lingkungan virtual juga bekerja dengan baik.

Contoh Alias:

alias python=python3

atau

alias python='/usr/bin/python3'

Script masih harus menggunakan sesuatu seperti #!/usr/bin/env python3 untuk kompatibilitas silang.

Menggunakan env bagus untuk penggunaan campuran dengan lingkungan virtual.

Catatan (terima kasih kepada @wjandrea): alias adalah bagian dari runtime bash, bukan lingkungan pengguna. Oleh karena itu, mereka tidak tersedia untuk shebang (#!). Jika Anda lebih suka alias python = python3, maka beberapa program.py tanpa shebang dapat dieksekusi dengan memanggil penerjemah alias seperti ini python program.py. Aliasing juga dapat berguna untuk sistem dengan beberapa versi python3 seperti 3.4 dan 3.6 bersama-sama.

Update: ini adalah cara yang salah, saya telah belajar, karena Python2 dan Python3 tidak dapat dipertukarkan.

Anda dapat mencoba alat baris perintah update-alternatives.

$ sudo update-alternatives --config python

Jika Anda mendapatkan error & quot;tidak ada alternatif untuk python & quot; kemudian mengatur alternatif sendiri dengan perintah berikut:

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

Mengubah jalur /usr/bin/python3 untuk versi python yang Anda inginkan sesuai.

Ubuntu, dan distro Linux lainnya dalam hal ini, masih sangat bergantung pada Python 2.7 untuk sejumlah aplikasi dan perintah. Jika Anda mengubah referensi default "python" ke Python 3.x, maka sejumlah fungsi Python akan mulai melempar kesalahan pernyataan.

Misalnya, di Ubuntu, 'pip' untuk satu tidak akan lagi berjalan dengan benar kecuali Anda langsung mengedit file dan mengubah shebang menjadi referensi'#!/usr/tempat sampah / env python2. 7'. Pada rasa RHEL (Red Hat Enterprise Linux) seperti Red Hat, Fedora dan CentOS, perintah 'Yum' juga bergantung pada Python 2.7.

Maksud saya di sini adalah bahwa anda akan menyebabkan sejumlah besar kode untuk mulai melemparkan kesalahan pernyataan hanya agar anda bisa mengetik 'python' di terminal Untuk Referensi Python 3.x.

Anda jauh lebih baik dengan menggunakan perintah 'python3' di terminal dan shebang '#!/usr/tempat sampah / env python3 ' di Python anda 3.file X.

Lakukan

cd ~gedit .bash_aliases

kemudian tulis juga

alias python=python3

atau

alias python='/usr/bin/python3'

Simpan file, tutup terminal dan buka lagi.
Tautan

Saya merasa sangat membantu untuk hanya menghapus/usr/bin /python dan/usr/bin / pip. Ini memaksa semua program untuk mengandalkan perintah" python2 "dan" python3".

Meskipun beberapa paket opsional dan usang bergantung pada #!/usr/bin/python agar berfungsi, saya lebih suka mengirimkan tambalan ke program tersebut daripada terus membuat kesalahan aneh dan terkadang sulit di-debug.

cat > /usr/local/bin/py << 'EOF'#!/bin/dashpython3 "$@"EOF

(asalkan Anda memiliki izin menulis ke / usr / local / bin) juga

cat > /usr/local/bin/pyi << 'EOF'#!/bin/dashpython3 -i "$@"EOF

maka Anda hanya mengetik py (dan menggunakan py di#! garis) untuk python yang Anda pilih.

Hanya peringatan: Jangan mencoba mengubah symlink/usr/bin / python untuk menunjuk ke python3 alih-alih 2.7. Banyak program yang tersedia di repo Ubuntu membutuhkan/usr/bin / python agar kompatibel dengan python 2.x.

Pada catatan lain, siapa pun yang datang ke sini karena mereka mencoba mempelajari tentang menjadikan Python 3 sebagai default, mungkin malah menemukan penggunaan dalam meneliti lingkungan virtual (misalnya virtualenv) atau wadah (misalnya LXC atau Docker).

@ wjandrea, ya bahkan di lingkungan virtual,pythonharus disimpan sebagai arti`python2’. Maksud saya komentar saya sebagai cara untuk memiliki versi Python khusus aplikasi alih-alih mencoba mengatasi Python sistem.

Ah, sekarang saya mengerti apa yang Anda maksud dengan upgrade… Sebenarnya Pengembang Ubuntu sedang mengerjakan itu: Python/3 - Ubuntu Wiki " ini adalah tujuan rilis untuk Ubuntu 14.04 LTS untuk hanya memiliki Python 3 pada gambar CD desktop."

Dalam referensi untuk Peringatan soulsource di atas lihat [PEP 394] (PEP 394 – The “python” Command on Unix-Like Systems | peps.python.org) yang menstandarkan konvensi penamaan untuk executable Python yang hidup berdampingan dan di mana programmer Python dan pengelola paket melakukan (dan harus) mengandalkan.

'sudo apt menginstal python-adalah-python3 '( untuk Ubuntu 20.04+)

@ soulsource, ya saya sadar akan hal itu. itu sebabnya saya bertanya apakah ada opsi" upgrade " yang tersedia atau tidak.

Saya pikir jawaban oleh Radu R Molibdeanu sudah cukup dekat dengan solusi optimal. Ini hanya berlaku untuk satu pengguna, dan hanya berlaku untuk langsung menjalankan python mengetik perintah python, tidak mempengaruhi program dengan #!/usr/bin / python shebang.

@ soulsource itulah yang saya cari! :slight_smile: terima kasih!

@ Kevin saya baru saja mencoba menggunakan virtualenv, tetapi segera setelah saya membuka Gedit dari terminal, saya mendapat banyak kesalahan karena pluginnya tampaknya membutuhkan Python 2. Masalah serupa bisa terjadi untuk perangkat lunak lain yang bergantung pada perintah python menjadi Python 2.