bagaimana cara mengubah versi python default?

106

Saya telah menginstal python 3.2 di mac saya. Setelah saya menjalankan / Applications / Python 3.2 / Update Shell Profile.command , membingungkan bahwa ketika saya mengetik python -V di Terminal dikatakan bahwa Python 2.6.1 , bagaimana cara mengubah versi default python?

Zhu Shengqi
sumber
Terkait: stackoverflow.com/a/18425592/939986
Santosh Kumar
Lihat opensource.com/article/19/5/python-3-default-mac untuk solusi yang bagus menggunakan pyenv.
Thomas Ahle

Jawaban:

115

Ini mungkin diinginkan untuk kompatibilitas ke belakang.

Python3 merusak kompatibilitas ke belakang, dan program yang memanggil 'python' mungkin mengharapkan python2. Anda mungkin memiliki banyak program dan skrip yang bahkan tidak Anda sadari yang mengharapkan python = python2, dan mengubahnya akan merusak program dan skrip tersebut.

Jawaban yang mungkin Anda cari adalah Anda tidak boleh mengubah ini .

Namun, Anda dapat membuat alias khusus di shell Anda. Cara Anda melakukannya tergantung pada cangkangnya, tetapi mungkin Anda bisa melakukannyaalias py=python3

Jika Anda bingung tentang cara memulai versi terbaru python, setidaknya kasus di Linux yang python3membuat python2instalasi Anda tetap utuh (karena alasan kompatibilitas di atas) ; sehingga Anda dapat memulai python3 dengan python3perintah.

ninjagecko
sumber
36
Ini adalah informasi yang berguna, tetapi pertanyaannya adalah "bagaimana saya dapat mengubah versi python default." Bisakah kita menambahkan sesuatu untuk membantu orang yang mencoba melakukan itu?
dmeyerson
Di Mac menginstal Python3 membuat Python2 tetap utuh juga. Tapi menurut saya ada cara untuk mengubah default yang dijalankan ketika hanya "python" yang diketik. Saya menemukan opsi sekali. Saya telah memilih untuk membiarkannya seperti di mana "python --version" menunjukkan 2.7.12 dan "python3 --version" menunjukkan 3.7.0. Saya setuju dengan dmeyerson di atas bahwa pertanyaannya adalah bagaimana cara mengubahnya. Nasihat Anda bagus, tetapi ada cara untuk mengubahnya jika Anda harus (atau benar-benar, sangat ingin).
Rich Sadowsky
3
> Jawaban yang mungkin Anda cari adalah Anda tidak boleh mengubah ini. Dan di sini saya pikir itu adalah "bagaimana cara mengubah ini"!
duane
2
Jawaban ini benar. Jangan ubah pythonpoin apa ke level sistem karena Anda dapat merusak komponen penting OS jika Anda melakukannya . Sebagai gantinya, gunakan instalasi Python 3 dan virtualen yang terpisah untuk memberi Anda Python default "lokal".
Martijn Pieters
51

Cek lokasi python 3

$ which python3
/usr/local/bin/python3

Tulis alias di bash_profile

vi ~/.bash_profile  
alias python='/usr/local/bin/python3'

Muat ulang bash_profile

source ~/.bash_profile

Konfirmasikan perintah python

$ python --version
Python 3.6.5
Ryosuke Hujisawa
sumber
2
ini adalah solusi yang buruk. Seperti yang disebutkan dalam jawaban yang diterima, $ pythondisediakan untuk python 2. Setiap program yang Anda jalankan di komputer Anda yang mengharapkan python 2 kemudian akan menerima python 3 karena alias, yang dapat memiliki konsekuensi negatif yang tidak terduga.
Shonin
Niat Apple tidak relevan dengan pertanyaan itu.
duane
45

Di Mac OS X yang menggunakan penginstal python.org seperti yang Anda miliki, Anda perlu memanggil Python 3 dengan python3, bukan python. Itu saat ini dicadangkan untuk versi Python 2. Anda juga bisa menggunakan python3.2untuk secara khusus memanggil versi itu.

$ which python
/usr/bin/python
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ cd /Library/Frameworks/Python.framework/Versions/3.2/bin/
$ ls -l
total 384
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 2to3@ -> 2to3-3.2
-rwxrwxr-x  1 root  admin    140 Feb 20 11:14 2to3-3.2*
lrwxr-xr-x  1 root  admin      7 Apr 28 15:51 idle3@ -> idle3.2
-rwxrwxr-x  1 root  admin    138 Feb 20 11:14 idle3.2*
lrwxr-xr-x  1 root  admin      8 Apr 28 15:51 pydoc3@ -> pydoc3.2
-rwxrwxr-x  1 root  admin    123 Feb 20 11:14 pydoc3.2*
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3*
lrwxr-xr-x  1 root  admin     12 Apr 28 15:51 python3-32@ -> python3.2-32
lrwxr-xr-x  1 root  admin     16 Apr 28 15:51 python3-config@ -> python3.2-config
-rwxrwxr-x  2 root  admin  25624 Feb 20 11:14 python3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 python3.2-32*
lrwxr-xr-x  1 root  admin     17 Apr 28 15:51 python3.2-config@ -> python3.2m-config
-rwxrwxr-x  1 root  admin  25784 Feb 20 11:14 python3.2m*
-rwxrwxr-x  1 root  admin   1865 Feb 20 11:14 python3.2m-config*
lrwxr-xr-x  1 root  admin     10 Apr 28 15:51 pythonw3@ -> pythonw3.2
lrwxr-xr-x  1 root  admin     13 Apr 28 15:51 pythonw3-32@ -> pythonw3.2-32
-rwxrwxr-x  1 root  admin  25624 Feb 20 11:14 pythonw3.2*
-rwxrwxr-x  1 root  admin  13964 Feb 20 11:14 pythonw3.2-32*

Jika Anda juga menginstal Python 2 dari python.org, itu akan memiliki direktori bin framework yang sama tanpa nama file yang tumpang tindih (kecuali untuk 2to3).

$ open /Applications/Python\ 2.7/Update\ Shell\ Profile.command
$ sh -l
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/2.7/bin:/Library/Frameworks/Python.framework/Versions/3.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
$ which python3
/Library/Frameworks/Python.framework/Versions/3.2/bin/python3
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ cd /Library/Frameworks/Python.framework/Versions/2.7/bin
$ ls -l
total 288
-rwxrwxr-x  1 root  admin    150 Jul  3  2010 2to3*
lrwxr-x---  1 root  admin      7 Nov  8 23:14 idle@ -> idle2.7
-rwxrwxr-x  1 root  admin    138 Jul  3  2010 idle2.7*
lrwxr-x---  1 root  admin      8 Nov  8 23:14 pydoc@ -> pydoc2.7
-rwxrwxr-x  1 root  admin    123 Jul  3  2010 pydoc2.7*
lrwxr-x---  1 root  admin      9 Nov  8 23:14 python@ -> python2.7
lrwxr-x---  1 root  admin     16 Nov  8 23:14 python-config@ -> python2.7-config
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 python2.7*
-rwxrwxr-x  1 root  admin   1663 Jul  3  2010 python2.7-config*
lrwxr-x---  1 root  admin     10 Nov  8 23:14 pythonw@ -> pythonw2.7
-rwxrwxr-x  1 root  admin  33764 Jul  3  2010 pythonw2.7*
lrwxr-x---  1 root  admin     11 Nov  8 23:14 smtpd.py@ -> smtpd2.7.py
-rwxrwxr-x  1 root  admin  18272 Jul  3  2010 smtpd2.7.py*
Ned Deily
sumber
Mengenai "saat ini dicadangkan untuk versi Python 2", apakah Anda memiliki tautan untuk itu?
Wildcard
Jika saya memiliki python 3.4 dan python 3.7, ketika saya mengetik python3 dari terminal, itu mengeksekusi python 3.4 bukan 3.7, bagaimana cara memperbaikinya?
Ysh
31

Pertanyaan lama, tetapi sebagai alternatif:

virtualenv --python=python3.5 .venv
source .venv/bin/activate
FreshPow
sumber
tentu tetapi jika Anda tidak memiliki file yang dapat dieksekusi (misalnya python3.5) solusi ini tidak berfungsi.
Afshin Mehrabani
Saya pikir ini mencakup stackoverflow.com/questions/5506110/…
FreshPow
19

Lakukan hal yang benar, lakukan hal yang benar!

-> Nol Buka terminal Anda,

--Masukan pertama python -V, Ini mungkin menunjukkan:

Python 2.7.10

Masukan -Kedua python3 -V, Ini mungkin menunjukkan:

Python 3.7.2

--Input Ketiga where pythonatau which python, Ini mungkin menunjukkan:

/usr/bin/python

--- Input keempat where python3atau which python3, Ini mungkin menunjukkan:

/usr/local/bin/python3

--Kelima tambahkan baris berikut di bagian bawah file variabel lingkungan PATH Anda di ~/.profile file or ~/.bash_profilebawah Bash atau di ~/.zshrcbawah zsh.

alias python='/usr/local/bin/python3'

ATAU

alias python=python3

-Masukan keenam di source ~/.bash_profilebawah Bash atau di source ~/.zshrcbawah zsh.

--Ketujuh Keluar dari terminal.

--- Kedelapan Buka terminal Anda, dan masukan python -V, Ini mungkin menunjukkan:

Python 3.7.2

Saya telah berhasil mencobanya.

Lainnya, di ~/.bash_profilebawah zsh bukan itu ~/.bash_profile.

Variabel lingkungan PATH di bawah zsh sebagai gantinya ~/.profile(atau ~/.bash_file) via ~/.zshrc.

Tolong kalian!

McAllister Bowman
sumber
16

Ubah Python "default" dengan meletakkannya di depan sistem Python di jalur Anda, misalnya:

export PATH=/usr/local/bin:$PATH
Adam Vandenberg
sumber
Asumsi saya adalah dengan melakukan ini Anda dapat merusak sesuatu di Mac. Karena ada banyak program dan script yang menggunakan alias "python". Jika tiba-tiba, karena perubahan prioritas dalam PATH, mereka mulai mengarah ke Python3 dan bukan Python2 - itu bisa merusak sesuatu. Secara potensial seluruh OS ... itu asumsi saya dan tidak diuji.
Aivoric
3
Perangkat lunak sistem apa pun akan menggunakan jalur lengkap ke sistem yang disediakan Python.
Adam Vandenberg
2

Menurut pencarian Google cepat, pembaruan ini hanya berlaku untuk shell saat ini yang Anda buka. Mungkin dapat diperbaiki dengan mengetik python3, karena mac dan linux cukup mirip untuk hal-hal seperti ini bertepatan. Link ke hasil pencarian google.

Selain itu, seperti yang dinyatakan oleh ninjagecko, sebagian besar program belum diperbarui ke 3.x, jadi memiliki python default sebagai 3.x akan merusak banyak skrip python yang digunakan dalam aplikasi.

Matt Habel
sumber
2

Saya menggunakan OS X 10.7.5 dan Python 3.4.2. Jika Anda mengetik python3dan apa yang Anda ingin jalankan maka akan dijalankan dengan menggunakan python 3. Misalnya pyhton3 test001.py. Itu menjalankan program pengujian yang saya buat yang disebut test001. Saya harap ini membantu.

ITGM
sumber
5
Selamat datang di Stack Overflow! Sepertinya jawaban Anda bukanlah jawaban yang sebenarnya untuk pertanyaan seperti yang ditanyakan. Silakan lihat stackoverflow.com/help/how-to-answer untuk bantuan jika Anda ingin memperbaikinya.
Lainnya
Saya menghabiskan waktu berjam-jam mencoba membuat python3 bekerja di Mac saya - ternyata mengetik 'python3' alih-alih 'python' yang lama berhasil.
YCode
1

Navigasi ke:

My Computer -> Properties -> Advanced -> Variabel Lingkungan -> Variabel Sistem

Misalkan Anda sudah menambahkan python 2.7 di variabel jalur dan Anda ingin mengubah jalur default ke python 3.x

lalu tambahkan path folder python3.5.x sebelum path python2.7.

buka cmd: ketik "python --version"

versi python akan diubah menjadi python 3.5.x

Ankit Agrawal
sumber
3
Itu Windows.
charles ross
Beberapa IDE yang menyertakan terminal / cmds / konsol, menyebarkan variabel lingkungan. Mulai ulang IDE untuk mendapatkan perubahan di dalam terminal sematan.
UselesssCat
0
sudo mv /usr/bin/python /usr/bin/python2
sudo ln -s $(which python3) /usr/bin/python

Ini akan merusak skrip, tetapi persis seperti cara untuk mengubah python. Anda juga harus menulis ulang skrip untuk tidak menganggapnya python2.x. Ini akan berfungsi terlepas dari tempat Anda menelepon systematau exec.

duane
sumber
0

Singkatnya: ubah jalur di Variabel Lingkungan!

Untuk Windows:

  • Lanjutan System Settings > Advance (tab). Di bawah Anda akan menemukan'Environment Variables'

  • Klik dua kali pada file Path. Anda akan melihat jalur ke salah satu instalasi python, ubah ke jalur versi yang Anda inginkan.

amalik2205
sumber
0

Periksa jalur eksekusi python3 yang memiliki perpustakaan

$ which python3
/usr/local/bin/python3  some OS might have /usr/bin/python3

buka file bash_profile dan tambahkan alias

vi ~/.bash_profile  
alias python='/usr/local/bin/python3' or alias python='/usr/bin/python3'

Muat ulang bash_profile untuk menerapkan modifikasi

source ~/.bash_profile

Jalankan perintah python dan periksa apakah itu memuat dengan python3

$ python --version
Python 3.6.5
Javeed Shakeel
sumber