it-swarm.dev

Beralih antara python 2.7 dan python 3.5 di Mac OS X

Saya biasanya menggunakan Python 2.7 tetapi baru-baru ini menginstal Python 3.5 menggunakan Miniconda di Mac OS X. Pustaka yang berbeda telah diinstal untuk kedua versi python ini. Sekarang, memasukkan salah satu kata kunci 'python' atau 'python3' di terminal memanggil python 3.5, dan 'python2' mengembalikan '-bash: python2: command not found'. Bagaimana saya bisa memohon mereka secara khusus menggunakan alias 'python2' dan 'python3' masing-masing?

Saat ini saya menggunakan OS X El Capitan.

38
Viswanath

IMHO, cara terbaik untuk menggunakan dua versi Python yang berbeda pada macOS adalah melalui homebrew. Setelah menginstal homebrew pada macOS, jalankan perintah di bawah ini di terminal Anda.

brew install [email protected]
brew install python

Sekarang Anda dapat menjalankan Python 2.7 dengan menjalankan python2 atau Python 3 dengan memanggil python3. Selain itu, Anda dapat menggunakan virtualenv atau pyenv untuk mengelola berbagai versi lingkungan python.

Saya tidak pernah menggunakan miniconda tapi dari dokumentasi, sepertinya mirip dengan menggunakan pip dan virtualenv dalam kombinasi.

63
forevergenin

Biner Python OSX (versi 2) terletak di /usr/bin/python

jika Anda menggunakan which python itu akan memberi tahu Anda di mana perintah python sedang diselesaikan. Biasanya, yang terjadi adalah pihak ketiga mendefinisikan kembali hal-hal dalam /usr/local/bin (yang lebih diutamakan, secara default lebih dari /usr/bin). Untuk memperbaikinya, Anda dapat menjalankan /usr/bin/python secara langsung untuk menggunakan 2.x atau menemukan definisi ulang yang salah (mungkin dalam /usr/local/bin atau di tempat lain di PATH Anda)

10
John Wilkey

Saya sudah menginstal python3 (via miniconda3) dan perlu menginstal python2 di samping itu brew install python tidak akan menginstal python2, jadi Anda perlu brew install [email protected].

Sekarang alias python2 merujuk ke python2.x dari /usr/bin/python

dan alias python3 mengacu pada python3.x dari /Users/ishandutta2007/miniconda3/bin/python

dan alias python mengacu pada python3 secara default.

Sekarang untuk menggunakan python sebagai alias untuk python2, saya menambahkan yang berikut ini ke file .bashrc 

alias python='/usr/bin/python'

Untuk kembali ke python3 sebagai default, cukup hapus baris ini bila diperlukan.

4
ishandutta2007

Cara mengatur versi python kembali ke 2.7 jika Anda telah menginstal Anaconda3 (Python 3.6) di MacOS High Sierra 10.13.5

Edit file .bash_profile di direktori home Anda.

vi $ HOME/.bash_profile

memotong garis # export PATH = "/ Pengguna/YOURUSERNAME/anaconda3/bin: $ PATH"

Tutup Shell terbuka lagi Anda akan melihat 2,7 ketika Anda menjalankan python.

Kemudian jika Anda ingin 3,6, Anda dapat menghapus tanda komentar pada baris anaconda3 Anda di profil bash Anda.

Mencoba memutuskan tautan python akan berakhir dengan air mata di Mac OSX.

Anda akan seperti ini

batalkan tautan:/usr/bin/python: Operasi tidak diizinkan

Semoga itu bisa membantu seseorang !! :) :)

2
Jace

Mirip dengan jawaban John Wilkey saya akan menjalankan python2 dengan menemukan which python, sesuatu seperti menggunakan /usr/bin/python dan kemudian membuat alias di .bash_profile:

alias python2="/usr/bin/python"

Saya sekarang dapat menjalankan python3 dengan memanggil python dan python2 dengan memanggil python2.

2
E.Hazledine

Jika Anda ingin menggunakan sistem Apple untuk memasang Python 2.7, perlu diketahui bahwa itu tidak cukup mengikuti standar penamaan yang tercantum dalam PEP 394 .

Secara khusus, ini termasuk symlink opsional dengan sufiks 2.7 yang Anda bilang tidak boleh mengandalkan, dan tidak termasuk symlink yang direkomendasikan dengan suffix 2 yang Anda bilang kepada Anda harus diandalkan.


Jika Anda ingin memperbaiki ini, sambil tetap menggunakan Python Apple, Anda dapat membuat symlink Anda sendiri:

$ cd <somewhere writable and in your PATH>
$ ln -s /usr/bin/python python2

Atau alias dalam konfigurasi bash Anda:

alias python2 python2.7

Dan Anda dapat melakukan hal yang sama untuk Apple 2to3, easy_install, dll. Jika Anda membutuhkannya.

Anda tidak boleh mencoba untuk menempatkan symlink ini ke dalam /usr/bin, dan pasti tidak mencoba untuk mengubah nama apa yang sudah ada di sana, atau untuk mengubah pengaturan distutil menjadi sesuatu yang lebih sesuai dengan PEP. File-file itu semua adalah bagian dari OS, dan dapat digunakan oleh bagian lain dari OS, dan perubahan Anda dapat ditimpa bahkan pada pembaruan kecil dari 10.13.5 hingga 10.13.6 atau apalah, jadi biarkan saja dan kerjakan di sekitarnya seperti dijelaskan di atas.


Atau, Anda bisa:

  • Cukup gunakan python2.7 alih-alih python2 pada baris perintah dan di shbangs Anda dan seterusnya. 
  • Gunakan lingkungan virtual atau lingkungan conda. python global, python3, python2, dll. Tidak masalah ketika Anda selalu menggunakan python lingkungan lokal yang diaktifkan.
  • Berhentilah menggunakan Apple 2.7 dan sebaliknya instal seluruh 2.7 lainnya di sampingnya, seperti sebagian besar jawaban lain menyarankan. (Saya tidak tahu mengapa begitu banyak dari mereka juga menyarankan agar Anda menginstal 3,6 kedua. Itu hanya akan menambah kebingungan lebih, tanpa manfaat.)
1
abarnert

Saya hanya menindaklanjuti jawaban dari @John Wilkey.

Alias ​​saya python digunakan untuk mewakili python2.7 (terletak di /usr/bin) . Namun python_path default sekarang didahului oleh /usr/local/bin untuk python3; karenanya ketika mengetik python, saya tidak mendapatkan versi python.

Saya mencoba membuat tautan di /usr/local/bin untuk python2:

ln -s /usr/bin/python /usr/local/bin/

Ini berfungsi saat memanggil python untuk python2

1
Chinh Sutran