web-dev-qa-db-ja.com

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

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

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

私は別のpythonインストールを処理するのを助けることができる別のパッケージpyenvについて読んだことがありますが、この解決策は私には適していません。

97
ePi272314

短い答え

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

長い答え

HomebrewでPythonをインストールするための公式は[email protected]pythonの2つです。
1つ目はPython 2用、2つ目はPython 3用です。

注: Pythonのバージョン3をインストールするための公式名としてpython3が記載されている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の履歴を見て、commintのIDを見つけることができます。

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

Python> 3.6.5

上記のリンクでは、3.6.5以上のバージョンのPythonの公式は見つかりません。その(公式の)レポジトリのメンテナがPython 3.7をリリースした後、彼らはPython 3.7のレシピにアップデートを送るだけです。

上で説明したように、自作では、Python 2(python @ 2)とPython 3(python)しかありません。 Python 3.6の明示的な公式はありません

これらのマイナーアップデートはほとんどの場合とほとんどのユーザーにとってほとんど無関係ですが、誰かが3.6の明示的な公式を作成した場合は検索します。

193
ePi272314

更新として、するとき

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

これを回避するには、brew installに--ignore-dependencies引数を追加します。

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
28
François

私が最初にやったのは私が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を実行しました。これで、仮想環境を作成するためのシステム内にすべてのpythonsがあります。

[email protected]~ $ python --version
Python 2.7.10
[email protected]~ $ python3.7 --version
Python 3.7.1
[email protected]~ $ python3.6 --version
Python 3.6.5

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

[email protected]~ $ 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.
[email protected]~ $ source env/bin/activate
(env) [email protected]~ $ python --version
Python 3.7.1
(env) [email protected]~ $ deactivate

Python 3.6仮想環境を作成する

[email protected]~ $ 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.
[email protected]~ $ source env/bin/activate
(env) [email protected]~ $ python --version
Python 3.6.5
(env) [email protected]~ $ 
10

これをhomebrewで解決するには、homebrew-coreを一時的に更新し、それを適切な位置に保持するようにHOMEBREW_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(tap_owner/tap_name)に抽出することもできます。

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

私は上のすべての答えを試して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をダウンロードする場合は、上記のURLのpython-365python-に置き換えます。 344
  3. GUIインストーラをダウンロードしたファイルをダウンロードすると開きます
  4. インストール後にこのバージョンのpythonを起動するためにpython-365をダウンロードした場合は、端末にpython365と入力します。これはpipと同じですが、pip365になります。

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

0
vincedjango