Bagaimana saya bisa menginstal versi Python 3 sebelumnya di macOS menggunakan homebrew?

133

Bagaimana saya bisa menginstal versi Python 3 sebelumnya di macOS menggunakan minuman?

Dengan perintah brew install pythonsaya mendapatkan versi terbaru dari Python 3 (saat ini v3.7.0), tetapi saya ingin versi terakhir dari Python 3.6 (saat ini 3.6.5).

Saya telah membaca tentang paket lain pyenvyang dapat membantu menangani instalasi python yang berbeda, tetapi solusi ini tidak cocok untuk saya.

ePi272314
sumber
5
Betapapun nilainya, dukungan Homebrew untuk berbagai versi Python buruk, dan semakin buruk. Saya akan merekomendasikan Anda menghindari menggunakan Homebrew untuk menginstal Python sama sekali. Python.org menyediakan paket instalasi macOS untuk berbagai versi Python yang dapat diinstal berdampingan satu sama lain (dan berdampingan dengan instalasi Homebrew Python jika Anda mau). Baik menggunakan paket-paket itu atau menggunakan alat seperti pyenv pada akhirnya akan menghemat banyak kesedihan dalam jangka panjang.
Daniel Pryden

Jawaban:

255

Jawaban singkat

Untuk melakukan instalasi Python 3.6.5 yang bersih, gunakan:

brew unlink python # ONLY if you have installed (with brew) another version of python 3
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb

Jika Anda lebih suka memulihkan versi yang sebelumnya diinstal, maka:

brew info python           # To see what you have previously installed
brew switch python 3.x.x_x # Ex. 3.6.5_1

Jawaban panjang

Ada dua rumus untuk menginstal Python dengan Homebrew: python@2dan python.
Yang pertama adalah untuk Python 2 dan yang kedua untuk Python 3.

Catatan: Anda dapat menemukan jawaban yang sudah ketinggalan zaman di web yang disebut python3sebagai nama rumus untuk menginstal Python versi 3. Sekarang sudah cukup python!

Secara default, dengan formula ini Anda dapat menginstal versi terbaru dari versi utama Python yang sesuai. Jadi, Anda tidak dapat langsung menginstal versi minor seperti 3.6.

Larutan

Dengan brew, Anda dapat menginstal paket menggunakan alamat rumus, misalnya dalam repositori git.

brew install https://the/address/to/the/formula/FORMULA_NAME.rb

Atau khusus untuk Python 3

brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/COMMIT_IDENTIFIER/Formula/python.rb

Alamat yang harus Anda tentukan adalah alamat ke komit terakhir dari rumus (python.rb) untuk versi yang diinginkan. Anda dapat menemukan pengidentifikasi commint dengan melihat riwayat homebrew-core / Formula / python.rb

https://github.com/Homebrew/homebrew-core/commits/master/Formula/python.rb

Python> 3.6.5

Di tautan di atas, Anda tidak akan menemukan formula untuk versi Python di atas 3.6.5. Setelah pengelola repositori (resmi) itu merilis Python 3.7, mereka hanya mengirimkan pembaruan ke resep Python 3.7.

Seperti dijelaskan di atas, dengan homebrew Anda hanya memiliki Python 2 (python @ 2) dan Python 3 (python), tidak ada rumus eksplisit untuk Python 3.6 .

Meskipun sebagian besar pembaruan kecil itu tidak relevan dalam kebanyakan kasus dan untuk sebagian besar pengguna, saya akan mencari apakah seseorang telah melakukan formula eksplisit untuk 3.6.

ePi272314
sumber
2
Bagaimana ini akan mempengaruhi atau berinteraksi dengan paket-paket di Homebrew yang bergantung pada penerjemah python3 default?
Telemachus
1
Dalam kasus apa pun, aplikasi yang bergantung pada Python (diinstal dengan minuman atau tidak) akan mencari python3 yang dapat dieksekusi di jalur aplikasi, dan Anda akan memiliki python3 yang menunjuk ke python3.6. Dengan demikian, Python 3 default Anda akan menjadi 3,6 (jika Anda menggunakan contoh di atas) dan itu sudah cukup. Python 3.7 sangat baru; Saya ragu ada aplikasi yang secara eksplisit membutuhkan Python 3.7, dengan cara yang sama, saya tidak tahu aplikasi apa pun yang hanya berfungsi dengan Python 3.6. Dengan kata lain. Anda akan baik-baik saja :)
ePi272314
2
Saya telah menginstal 3,7 dan menerima kesalahan ini: Error: python 3.7.0 is already installed To install 3.6.5_1, first run brew unlink python`` saat menggunakan 'jawaban singkat'.
wuliwong
2
Terima kasih telah memberikan tautan komit langsung untuk 3.6.5. Anda menyelamatkan saya dari situasi tanpa harapan.
tsalaroth
4
Saya tahu ini sedikit lebih tua, tetapi saya berusaha keras untuk mencari tahu bagaimana Anda mendapatkan tautan ke rumus. Versi 3.6 saat ini adalah 3.6.7, apakah ada beberapa pendekatan sederhana untuk menemukan rumus ini?
diek
32

Sebagai pembaruan, saat melakukan

brew unlink python # If you have installed (with brew) another version of python
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb

Anda mungkin bertemu

Error: python contains a recursive dependency on itself:
  python depends on sphinx-doc
  sphinx-doc depends on python

Untuk memotongnya, tambahkan --ignore-dependenciesargumen untuk menyeduh instal.

brew unlink python # If you have installed (with brew) another version of python
brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
ramah
sumber
1
dan kemudian Anda akan memiliki mimpi buruk dengan neraka ketergantungan ... seperti discourse.brew.sh/t/brew-install-python3-fails/1756/7
confiq
4
ini pada awalnya tidak berhasil bagi saya; pada dasarnya harus melakukan ini: brew install --debug --ignore-dependencies raw.githubusercontent.com/Homebrew/homebrew-core/… dan setelah gagal membuat html, abaikan saja kesalahan dengan memilih 2). kegagalan html / docs mungkin akan menggigit saya nanti, tetapi untuk saat ini berfungsi dengan baik: mengangkat bahu:
kacang
20

Apa yang saya lakukan adalah pertama kali saya menginstal python 3.7

brew install python3
brew unlink python

kemudian saya menginstal python 3.6.5 menggunakan tautan di atas

brew install --ignore-dependencies https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb --ignore-dependencies

Setelah itu saya lari brew link --overwrite python. Sekarang saya memiliki semua ular sanca dalam sistem untuk menciptakan lingkungan virtual.

mian@tdowrick2~ $ python --version
Python 2.7.10
mian@tdowrick2~ $ python3.7 --version
Python 3.7.1
mian@tdowrick2~ $ python3.6 --version
Python 3.6.5

Untuk membuat Python 3.7 lingkungan virtual.

mian@tdowrick2~ $ virtualenv -p python3.7 env
Already using interpreter /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.7'
New python executable in /Users/mian/env/bin/python3.7
Also creating executable in /Users/mian/env/bin/python
Installing setuptools, pip, wheel...
done.
mian@tdowrick2~ $ source env/bin/activate
(env) mian@tdowrick2~ $ python --version
Python 3.7.1
(env) mian@tdowrick2~ $ deactivate

Untuk membuat lingkungan virtual Python 3.6

mian@tdowrick2~ $ virtualenv -p python3.6 env
Running virtualenv with interpreter /usr/local/bin/python3.6
Using base prefix '/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/mian/env/bin/python3.6
Not overwriting existing python script /Users/mian/env/bin/python (you must use /Users/mian/env/bin/python3.6)
Installing setuptools, pip, wheel...
done.
mian@tdowrick2~ $ source env/bin/activate
(env) mian@tdowrick2~ $ python --version
Python 3.6.5
(env) mian@tdowrick2~ $ 
Mian Asbat Ahmad
sumber
1
Meskipun ini kelihatannya bagus, tidak lagi berfungsi, hasilnya adalah:python -V && python3.7 -V && python3 -V && python3.6 -V Python 2.7.15 Python 3.7.3 Python 3.7.3 zsh: command not found: python3.6
Wafer
1
Perhatikan baik-baik jawaban saya, karena 3.6 Anda harus menulis python3.6 -V. Anda telah melakukan python3 -Vdua kali itu sebabnya Anda mendapatkan 3.7.3dua kali dan hilang3.6
Mian Asbat Ahmad
1
Bagi saya, ini bersembunyi di python3.6bawah /usr/local/Cellar/python/3.6.5_1/bin. Setelah saya membuat tautan, itu berfungsi seperti yang Anda katakan. Sistem manajemen diri python ini tampaknya merupakan fraktal dari sejuta programmer yang dikode oleh gerakan brown.
Eric Leschinski
11

Saya mencoba semua jawaban di atas untuk menginstal Python 3.4.4. Instalasi python berhasil, tetapi PIP tidak akan diinstal dan tidak ada yang bisa saya lakukan untuk membuatnya bekerja. Saya menggunakan Mac OSX Mojave, yang menyebabkan beberapa masalah dengan zlib, openssl.

Apa yang tidak dilakukan:

  • Cobalah untuk menghindari menggunakan Homebrew untuk versi sebelumnya yang diberikan oleh rumus Python atau Python3 .
  • Jangan mencoba mengompilasi Python

Larutan:

  1. Unduh pemasang macOS 64-bit atau pemasang macOS 64-bit / 32-bit : https://www.python.org/downloads/release/python-365/
  2. Pada langkah sebelumnya, itu akan mengunduh Python 3.6.5 , jika misalnya, Anda ingin mengunduh Python 3.4.4 , ganti di url di atas python-365 oleh python-344
  3. Unduh klik pada file yang Anda unduh yang akan dibuka oleh penginstal GUI
  4. Jika Anda mengunduh python-365 , setelah instalasi, untuk meluncurkan versi python ini, Anda akan mengetikkan terminal python365 Anda , hal yang sama untuk pip, itu akan menjadi pip365

ps: Anda tidak perlu menghapus versi Python lain di sistem Anda.


Edit:


Saya menemukan solusi yang jauh lebih baik yang bekerja pada MacOSX, Windows, Linux, dll.

  1. Tidak masalah jika Anda sudah menginstal python atau tidak.
  2. Unduh Anaconda
  3. Setelah diinstal, dalam tipe terminal: conda init
  4. Di terminal, buat lingkungan virtual dengan versi python apa pun , misalnya, saya memilih 3.4.4:conda create -n [NameOfYour VirtualEnvironment] python=3.4.4
  5. Kemudian, di terminal, Anda dapat memeriksa semua lingkungan virtual yang Anda buat dengan perintah: conda info --envs
  6. Kemudian, di terminal, aktifkan lingkungan virtual pilihan Anda dengan: conda activate [The name of your virtual environment that was shown with the command at step 5]
vincedjango
sumber
9

Saya sudah mencoba segalanya tetapi tidak berhasil. Akhirnya saya telah menggunakan pyenvdan bekerja secara langsung seperti pesona.

Jadi setelah homebrewdiinstal, juste do:

brew install pyenv
pyenv install 3.6.5

untuk mengelola virtualenvs:

brew install pyenv-virtualenv
pyenv virtualenv 3.6.5 env_name

Lihat pyenv dan pyenv-virtualenv untuk info lebih lanjut.

EDIT (2019/03/19)

Saya telah menemukan menggunakan pyenv-installer lebih mudah daripada homebrew untuk menginstal pyenv dan pyenv-virtualenv direclty:

curl https://pyenv.run | bash

Untuk mengelola versi python, baik secara global:

pyenv global 3.6.5

atau secara lokal di direktori yang diberikan:

pyenv local 3.6.5
ClementWalter
sumber
Ini sebenarnya tidak secara langsung menjawab pertanyaan tetapi malah menghindarinya dengan virtualenvpendekatan.
javadba
1
sebenarnya virtualenv tidak diperlukan. pyenvmemungkinkan Anda mengelola versi python tanpa perlu menggunakan venv
ClementWalter
5

Jika ada yang menghadapi masalah pip seperti di bawah ini

pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.

Akar penyebabnya adalah openssl 1.1 tidak mendukung python 3.6 lagi. Jadi, Anda perlu menginstal versi lama openssl 1.0

ini solusinya:

brew uninstall --ignore-dependencies openssl
brew install https://github.com/tebelorg/Tump/releases/download/v1.0.0/openssl.rb
Justin Shan
sumber
1

Untuk mengatasinya homebrew, Anda dapat memutakhirkan sementara waktu homebrew-coredan mengatur HOMEBREW_NO_AUTO_UPDATEvariabel untuk menahannya:

cd `brew --repo homebrew/core`
git checkout f2a764ef944b1080be64bd88dca9a1d80130c558
export HOMEBREW_NO_AUTO_UPDATE=1
brew install python

Saya tidak merekomendasikan homebrew-core yang secara permanen ketinggalan zaman, karena Anda akan kehilangan patch keamanan, tetapi ini berguna untuk tujuan pengujian.

Anda juga dapat mengekstraksi formula rumahan versi lama ke dalam tap Anda sendiri (tap_owner / tap_name) menggunakan brew extract perintah:

brew extract python tap_owner/tap_name --version=3.6.5
Steven Peters
sumber
0

Cara termudah bagi saya adalah menginstal Anaconda: https://docs.anaconda.com/anaconda/install/

Di sana saya dapat membuat banyak lingkungan dengan versi Python yang berbeda seperti yang saya inginkan dan beralih di antara mereka dengan klik mouse. Itu tidak bisa lebih mudah.

Untuk menginstal versi Python yang berbeda, cukup ikuti instruksi ini https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-python.html

Lingkungan pengembangan baru dengan versi Python yang berbeda dilakukan dalam 2 menit. Dan di masa depan saya dapat dengan mudah beralih bolak-balik.

klaaba
sumber