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


Itu python perintah program mengeksekusi Python 2. Python 3 dapat dijalankan dengan menggunakan python3 perintah. Bagaimana Python 3 dapat dieksekusi menggunakan python perintah?


224
2017-07-17 08:04


asal


Hanya peringatan: Jangan mencoba mengubah symlink / usr / bin / python untuk menunjuk ke python3, bukan 2.7. Banyak program yang tersedia di repositori Ubuntu mengharuskan / usr / bin / python agar kompatibel dengan python 2.x. - soulsource
@soulsource, ya saya tahu itu. itu sebabnya saya bertanya apakah ada "upgrade" opsi yang tersedia atau tidak. - Giri
Ah, sekarang saya mengerti apa yang Anda maksud dengan upgrade ... Sebenarnya pengembang Ubuntu sedang mengerjakan hal itu: wiki.ubuntu.com/Python/3 "Ini adalah tujuan rilis untuk Ubuntu 14.04 LTS untuk hanya memiliki Python 3 pada gambar CD desktop." - soulsource
Pada catatan lain, siapa pun yang datang ke sini karena mereka mencoba belajar tentang menjadikan Python 3 sebagai default mereka, mungkin malah menemukan manfaat dalam meneliti lingkungan virtual (misalnya virtualenv) atau kontainer (misalnya LXC atau Docker). - Kevin
Berkaitan dengan peringatan soulsource di bagian atas, lihat PEP 394 yang menstandarisasi konvensi penamaan untuk eksekutur Python yang ada dan di mana programmer Python dan pengelola paket melakukan (dan seharusnya) bergantung. - David Foerster


Jawaban:


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

alias python=python3

Setelah menambahkan di atas dalam file, jalankan perintah di bawah ini:

source ~/.bash_aliases or source ~/.bashrc

Sebagai contoh:

$ python --version
Python 2.7.6
$ python3 --version
Python 3.4.3
$ alias python=python3
$ python --version
Python 3.4.3

Untuk menghindari alias gunakan command perintah built-in:

$ command python --version
Python 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 menggunakan unalias perintah built-in:

$ unalias python
$ python --version
Python 2.7.6

258
2017-07-17 08:13



jadi tidak ada opsi "upgrade" .. ?? - Giri
@Giri Kamu mengatakan yang kamu miliki python3. Apa yang harus ditingkatkan? - Radu Rădeanu
sebenarnya saya ingin menghapus 2.7 dan menggantinya dengan 3.3. Sepertinya itu ide yang buruk untuk saat ini .. - Giri
+1 tidak ada alasan untuk membersihkan 2,7 agar dapat bekerja dengan 3,3. Karena banyak perangkat lunak masih bergantung pada 2.7; tetaplah berkeliaran. - don.joey
@begueradj An alias benar-benar berbeda dari tautan simbolis. - Radu Rădeanu


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


Dari Ubuntu wiki:

Untuk Ubuntu dan Debian, kami punya sedang berlangsung proyek tujuan untuk menjadikan Python 3 sebagai default, lebih disukai versi Python di distro.

Apa ini tidak berarti:

  • /usr/bin/python akan menunjuk ke Python 3. Tidak, ini tidak akan terjadi (kecuali kalau PEP 394 menganjurkan yang lain, 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 di hulu sampai 2020.

Tidak dianjurkan untuk mengubah link simbolik karena dependensi paket lainnya, tetapi mereka "memiliki tujuan proyek yang sedang berlangsung untuk menjadikan Python 3 sebagai default, versi Python pilihan dalam distro".


Untuk penggunaan CLI, suka @Radu Rădeanu, Saya akan merekomendasikan menempatkan alias di pengguna ~/.bashrc, .bash_aliases file (file yang berbeda, termasuk ~/.bash_profile, semuanya dimuat bersama dan hanya untuk tujuan organisasi). Python lingkungan virtual juga bekerja dengan baik.

Seperti:

alias python=python3

atau

alias python='/usr/bin/python3'

Skrip kemudian dapat mulai dengan sesuatu seperti:

#!/usr/bin/env python

dari pada

#!/usr/bin/python3

Saya masih akan merekomendasikan menggunakan #!/usr/bin/python3 (atau #!/usr/bin/env python3) dalam skrip untuk kompatibilitas silang yang lebih sederhana.

Menggunakan env bagus untuk digunakan campuran dengan lingkungan virtual.


68
2018-06-02 16:31



Ini tampaknya ketinggalan zaman sekarang: mereka berencana untuk menghapus python2 di Xenial, tetapi kemudian tidak. - OrangeDog
@OrangeDog, terima kasih atas pembaruannya. Ya, halaman wiki yang saya kutip sekarang ditandai sebagai ketinggalan zaman, karena lebih banyak kemajuan telah dibuat dalam dua tahun terakhir karena pindah ke hanya Python 3. Halaman baru untuk mengikuti perkembangan ini adalah resmi Halaman Ubuntu Python. - Kevin
Halaman "terbaru" juga ketinggalan zaman, terkait dengan rencana untuk Xenial. - OrangeDog
Saya tidak akan mengatakan itu "ketinggalan zaman" seperti "belum diperbarui baru-baru ini." Ini tampaknya masih menjadi lokasi saat ini untuk menjaga posting tentang ini. Namun, dalam komentar di sini, saya akan menghargai sumber-sumber baru lainnya yang dapat ditemukan siapa pun. Menambahkan lebih banyak sumber ke jawaban saya, tentang mengapa tidak membuat perubahan menjadi adil python, tidak benar-benar relevan hingga konversi selesai. Bahkan kemudian, itu mungkin menjadi tidak masalah. - Kevin
@OrangeDog sangat mungkin untuk memiliki sistem Xenial tanpa Python 2 - Saya telah menjalankan Ubuntu Xenial Mate pada Raspberry PI dan memiliki desktop tetapi tidak ada python2.7. Masih ada beberapa paket opsional (atau yang diperlukan untuk pengalaman desktop) yang menarik Python 2 sehingga kemungkinan Anda memilikinya. - Antti Haapala


Perbarui: 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 kesalahan "tidak ada alternatif untuk python", maka atur sendiri alternatif dengan perintah berikut:

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

Ubah jalan /usr/bin/python3 ke versi python yang Anda inginkan.


8
2018-05-04 14:03



python2 dan python3 bukanlah alternatif. Jangan gunakan pembaruan-alternatif untuk tujuan ini. - jobin
Kenapa mereka tidak? Bisakah salah satu dari Anda tolong jelaskan mengapa update-alternatives tidak cocok untuk python? Apakah karena legacy.python.org/dev/peps/pep-0394 ? - Dmitry Grigoryev
alternatif adalah implementasi yang berbeda untuk fungsi yang sama. python2 dan python3 tidak menyediakan fungsionalitas yang sama. - Ely
Anda dapat melakukan sesuatu seperti ini jika Anda menginstal secara manual (melalui ppa atau apa pun) versi python3 lainnya. sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2 - David Baucum


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

Sebagai contoh, pada Ubuntu, 'pip' untuk satu tidak lagi berjalan dengan benar kecuali Anda langsung mengedit file dan mengubah shebang menjadi referensi '#! / Usr / bin / env python2.7'. Pada RHEL (Red Hat Enterprise Linux) rasa 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 penegasan supaya Anda bisa mengetikkan 'python' di terminal untuk referensi Python 3.x.

Anda jauh lebih baik dengan menggunakan perintah 'python3' di terminal dan shebang '#! / Usr / bin / env python3' dalam file Python 3.x Anda.


3
2018-03-25 15:43





Melakukan

cd ~
gedit .bash_aliases

kemudian tulis juga

alias python=python3

atau

alias python='/usr/bin/python3'

Simpan file, tutup terminal dan buka lagi.
Link


1
2017-09-15 18:36





Kamu dapat memakai update-alternatives untuk menyediakan berbagai versi program yang mungkin diperlukan pada waktu yang berbeda karena masalah kompatibilitas.

Jawaban ini Merupakan contoh yang baik untuk bagaimana mengatur segalanya untuk secara simultan memelihara versi berbeda gcc / g ++, misalnya.

lakukan saja hal yang sama dengan python2.7 dan python 3.3


0
2017-10-18 13:19



Pengguna awal mungkin tidak dapat dengan mudah menyesuaikan jawaban yang ditautkan ke situasi yang berbeda. Selain mengkreditkan jawaban sebelumnya, akan lebih baik untuk meletakkan langkah-langkah yang diperlukan untuk Python. - chaskes
Di sini saya menemukan solusi langkah demi langkah yang baik linuxconfig.org/… - woto


cat > /usr/local/bin/py
#!/usr/bin/dash
python3 "$@"
<CTRL-D>

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

cat > /usr/local/bin/pyi
#!/usr/bin/dash
python3 -i "$@"
<CTRL-D>

maka Anda hanya mengetikkan py (dan menggunakan py di #! lines) untuk python pilihan Anda.


0
2018-01-15 22:57





Anda dapat melakukan symlink /usr/bin/python untuk python3 dengan

sudo ln -s /usr/bin/python3 /usr/bin/python

Lihat jawaban lain mengapa Anda mungkin tidak ingin melakukan ini. Ubuntu 18.04 tidak lagi hadir dengan Python 2, jadi seharusnya tidak terlalu buruk.


0
2018-05-03 21:01