Homebrewを使用して以前のバージョンのPython 3をmacOSにインストールするにはどうすればよいですか?


133

brewを使用してmacOSに以前のバージョンのPython 3をインストールするにはどうすればよいですか?

コマンドでbrew install python最新バージョンのPython 3(現在はv3.7.0)を入手しましたが、最新バージョンのPython 3.6(現在は3.6.5)が必要です。

pyenv別のpythonインストールの処理を支援できる別のパッケージについて読みましたが、このソリューションは私には適していません。


5
それだけの価値があるとはいえ、Pythonの複数のバージョンに対するHomebrewのサポートはひどいものであり、徐々に悪化しています。Homebrewを使用してPythonをインストールしないことをお勧めします。Python.orgは、さまざまなバージョンのPython用のmacOSインストールパッケージを提供しています。これらは、相互に(必要に応じて、Homebrew Pythonインストールと一緒に)インストールできます。これらのパッケージを使用するか、pyenvのようなツールを使用すると、最終的には長期的に多くの悲しみを救うことができます。
Daniel Pryden

回答:


255

短い答え

Python 3.6.5のクリーンインストールを行うには、次のコマンドを使用します。

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

以前にインストールしたバージョンを復元する場合は、次のようにします。

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

長い答え

そこ自作でのPythonをインストールするための2つの式は、次のとおりpython@2python
1つ目はPython 2用、2つ目はPython 3用です。

注:python3 Pythonバージョン3をインストールするための式の名前として言及されている古い回答はWebで見つけることができますpython

デフォルトでは、これらの数式を使用して、対応するPythonのメジャーバージョンの最新バージョンをインストールできます。したがって、3.6のようなマイナーバージョンを直接インストールすることはできません。

解決

ではbrew、式のアドレスを使用してパッケージをインストールできます(例:gitリポジトリ)。

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

または具体的にはPython 3

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

指定する必要があるアドレスは、目的のバージョンの数式(python.rb)の最後のコミットへのアドレスです。自作の識別子は、homebrew-core / Formula / python.rbの履歴を見ればわかります。

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

Python> 3.6.5

上記のリンクには、Pythonバージョン3.6.5以上の式はありません。その(公式)リポジトリのメンテナがPython 3.7をリリースした後、彼らはPython 3.7のレシピの更新のみを送信します。

上記で説明したように、homebrewではPython 2(python @ 2)とPython 3(python)しかありません。Python3.6の明示的な式はありません

これらのマイナーな更新はほとんどの場合、ほとんどのユーザーにとって重要ではありませんが、誰かが3.6の明示的な公式を行ったかどうかを検索します。


2
これは、デフォルトのpython3インタープリターに依存するHomebrewのパッケージにどのように影響または相互作用しますか?
Telemachus

1
いずれの場合でも、Pythonに依存するアプリケーション(brewでインストールされているかどうかにかかわらず)は、アプリケーションパスでpython3実行可能ファイルを探し、python3を指すpython3を取得します。したがって、デフォルトのPython 3は3.6(上記の例を使用する場合)であり、それで十分です。Python 3.7はとても最近です。明示的にPython 3.7を必要とするアプリケーションがあるのではないかと思います。同じように、Python 3.6でのみ機能するアプリケーションは知りません。言い換えると。あなたは元気です:)
ePi272314

2
私は3.7をインストールしていて、このエラーを受け取りました:Error: python 3.7.0 is already installed To install 3.6.5_1, first run 「短い答え」を使用すると、「blink unlink python」が表示されます。
ウリウォン

2
3.6.5の直接コミットリンクを提供していただきありがとうございます。あなたは絶望的な状況から私を救いました。
tsalaroth

4
私はこれが少し古いことを知っていますが、数式へのリンクを取得する方法を理解しようとして苦労しています。3.6の現在のバージョンは3.6.7ですが、この式を見つける簡単な方法はありますか?
Diekの

32

更新として、行うとき

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

遭遇するかもしれません

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

これをバイパスするには、--ignore-dependenciesbrew installに引数を追加します。

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

1
そして、あなたは依存関係の地獄の悪夢を見るでしょう... discourse.brew.sh/t/brew-install-python3-fails/1756/7の
confiq

4
これは最初はうまくいきませんでした。--debug --ignore-依存関係をインストールBREW:基本的にこれを行う必要があったraw.githubusercontent.com/Homebrew/homebrew-core/...を )、それはメイクHTMLに失敗した後、わずか2を選択することで、エラーを無視します。html / docsの失敗はおそらく後で私に噛み付くでしょうが、今のところ問題なく動作しています:shrug:
beans

20

私がしたことは、最初にpython 3.7をインストールしたことです

brew install python3
brew unlink python

次に、上記のリンクを使用してpython 3.6.5をインストールしました

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

その後、私は走ったbrew link --overwrite python。これで、仮想環境を作成するためのすべてのpythonがシステムに含まれました。

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

Python 3.7仮想環境を作成します。

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

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~ $ 

1
それのようなこのルックスは素晴らしいことだが、それはもはや作品、結果は次のとおりです。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
ウェハ

1
私の答えをよく見てください。3.6の場合、python3.6 -Vと書く必要があります。あなたはpython3 -V2度そのことをしたので、3.7.32度失って行方不明になっています3.6
Mian Asbat Ahmad

1
私にとって、これはのpython3.6下に隠れてい/usr/local/Cellar/python/3.6.5_1/binます。リンクを作成すると、あなたの言うとおりに機能します。このpython自己管理システムは、ブラウン運動によってコーディングする100万人のプログラマーのルーブゴールドバーグフラクタルのようです。
Eric Leschinski、

11

上記の答えをすべて試し、Python 3.4.4をインストールしました。Pythonのインストールは機能しましたが、PIPはインストールされず、機能させるために何もできませんでした。Mac OSX Mojaveを使用していたため、zlib、opensslで問題が発生しました。

してはいけないこと:

  • PythonまたはPython3で指定された以前のバージョンでHomebrewを使用しないようにしてください。
  • Pythonをコンパイルしないでください

解決:

  1. macOS 64ビットインストーラーまたはmacOS 64ビット/ 32 ビットインストーラーをダウンロードしますhttps : //www.python.org/downloads/release/python-365/
  2. 前のステップでは、Python 3.6.5をダウンロードしますたとえば、Python 3.4.4をダウンロードする場合は、python-365の上のURL をpython-344で置き換えます。
  3. ダウンロードGUIインストーラーをダウンロードしたファイルをクリックして開きます
  4. python-365をダウンロードした場合インストール後に、このバージョンのpythonを起動するには、端末にpython365と入力します。pipについても同じで、pip365になります

ps:システム上の他のバージョンのPythonをアンインストールする必要はありません。


編集:


MacOSX、Windows、Linuxなどで動作するはるかに優れたソリューションを見つけました。

  1. 既にpythonがインストールされているかどうかは関係ありません。
  2. ダウンロード Anacondaを
  3. インストールしたら、ターミナルタイプで: conda init
  4. ターミナルで、任意の仮想環境を作成します pythonバージョンでたとえば、私は3.4.4を選びました:conda create -n [NameOfYour VirtualEnvironment] python=3.4.4
  5. 次に、ターミナルで、作成したすべての仮想環境を次のコマンドで確認できます。 conda info --envs
  6. 次に、ターミナルで、選択した仮想環境を次のようにアクティブ化します。 conda activate [The name of your virtual environment that was shown with the command at step 5]

9

私はすべてを試しましたが、うまくいくことができませんでした。最後に私は使用しましたがpyenv、それは魅力のように直接機能しました。

たのでhomebrewインストールし、ジュストの操作を行います。

brew install pyenv
pyenv install 3.6.5

virtualenvを管理するには:

brew install pyenv-virtualenv
pyenv virtualenv 3.6.5 env_name

詳細については、pyenvおよびpyenv-virtualenvを参照してください。

編集(2019/03/19)

私はpyenvおよびpyenv-virtualenv direcltyをインストールするために自作よりも簡単にpyenv-installerを使用することを発見しました:

curl https://pyenv.run | bash

Pythonバージョンをグローバルに管理するには:

pyenv global 3.6.5

または特定のディレクトリのローカル:

pyenv local 3.6.5

これは実際には質問に直接回答するのではなく、virtualenvアプローチによってそれを回避します。
javadba

1
実際にはvirtualenvは必要ありません。pyenvvenvを使用する必要なくPythonバージョンを管理できます
ClementWalter

5

誰かが以下のようなピップ問題に直面した場合

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

根本的な原因は、openssl 1.1がpython 3.6をサポートしていないことです。古いバージョンのopenssl 1.0をインストールする必要があります

ここに解決策があります:

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

1

これをで解決するにはhomebrew、一時的にバックデートしhomebrew-coreHOMEBREW_NO_AUTO_UPDATEそれを保持するように変数を設定します。

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

セキュリティパッチを見逃すことになるので、homebrew-coreを永久にバックデートすることはお勧めしませんが、テスト目的には役立ちます。

brew extract次のコマンドを使用して、自作の数式の古いバージョンを独自のタップ(tap_owner / tap_name)に抽出することもできます。

brew extract python tap_owner/tap_name --version=3.6.5

0

私にとって最も簡単な方法は、Anacondaをインストールすることでした:https : //docs.anaconda.com/anaconda/install/

そこで、Pythonバージョンが異なる環境を必要なだけ作成し、マウスクリックでそれらを切り替えることができます。それは簡単なことではありません。

異なるPythonバージョンをインストールするには、以下の手順に従ってください https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-python.html

Pythonバージョンが異なる新しい開発環境が2分以内に完了しました。将来的には、簡単に切り替えることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.