Homebrewを使用してMacにPython 2と3の両方をインストールするにはどうすればよいですか?


146

Python 2と3を切り替えられるようにする必要があります。パスをいじったりトラブルに巻き込みたくないので、Homebrewを使用してどうすればよいですか。現在、Homebrewを通じて2.7をインストールしています。


自作の参照は必ずしも目標を達成するための要件ではないので、質問を変更して、自作の参照を削除することをお勧めします(例:stackoverflow.com/a/49091638/2923369の下の私の回答を参照)
Matt Schlobohm

回答:


288

pyenvを使用します。インストールできます。

$ brew install pyenv

Bashシェルでpyenvを有効にするには、次を実行する必要があります。

$ eval "$(pyenv init -)"

起動時にBashに対してこれを自動的に行うには、その行をに追加します~/.bash_profile1

使用法:

pyenvをインストールしてアクティブ化したら、異なるバージョンのpythonをインストールして、使用できるバージョンを選択できます。例:

$ pyenv install 2.7.5

インストールしたバージョンは次の方法で確認できます。

$ pyenv versions

また、次のコマンドでpythonのバージョンを切り替えることができます。

$ pyenv global 3.3.1

また、現在のディレクトリのpythonバージョンを次のように設定できます。

$ pyenv local 3.5.2

次を実行して確認できますpython --version

$ python --version
Python 3.5.2

1 自作では、pyenvのインストール時にこれを行うように指示されていまし、メッセージは削除されました。Zshと他のシェルでは、正確な手順が異なる場合があります。


これが最も簡単な解決策です。私は現在、これをPython 3と2.7.xの間の切り替えに使用しています
Naz Mir

3
homebrewを介してpython 2.7をすでにインストールしている場合、pyenvを使用する際に注意すべきことはありますか?pyenvを介して別のpython 2.7をインストールできますか?
Drake Guan

3
はい、pyenvを介して別のpython 2.7をインストールできます。そのPythonを$ PYENV_ROOT / versionsにインストールします。「pyenvバージョン」を実行すると、homebrewを介してインストールされた他のpython 2.7が「システム」として表示されることがあります。
モリウェア2013年

5
eval "$(pyenv init -)"pyenv を機能させるには、.profile / .zshrc に追加する必要がありました。
Rohmer、2015

5
@ ilciavo、eval "$(pyenv init -)"〜/ .bash_profile に追加する必要があるかもしれません
Jojanzing

77

両方のバージョンを同時にインストールできます。

Homebrew> = 1.5.0の場合:

2018年3月1日以降、python数式はPython 3.xにアップグレードされpython@2ますが、特にPython 2.7用の新しい数式が追加されます。

変更のお知らせはこちら、またはPythonでのHomebrewの使用に関する最終的なドキュメントはこちらをご覧ください。

古いHomebrewの場合:

Python 2.xの場合:

brew install python

Python 3.xの場合:

brew install python3

これで、両方のバージョンがマシンにインストールされました。バージョン2を使用する場合は、python実行可能ファイルを使用してください。バージョン3を使用する場合は、python3実行可能ファイルを使用してください。


問題は両方を使用することです
meduz、

更新していただきありがとうございます!私は同様のルートをたどりましたが、PYTHONPATH変更ごとに設定する必要があるという問題がありました... それ以外にも、pyenv素晴らしいです。
メデューズ

9
また、python2とpython3が並んでいると、Pythonはpython2をポイントし、python3はpython3をポイントすることに注意してください。ただし、大きな問題は、pipがpip2を指さないことです。実際には、pip3を指します(pip3は明らかにそうです)。pip2を使用するには、明示的にpip2を使用します。2にPythonのポイントのための非数値サフィックスを持つビット矛盾なくPIPポイントの非数値サフィックス3に
JD

5
これは、pipのような一般的な実行可能ファイルを台無しにします。この場合、python3はpython2 pipを上書きし、それがデフォルトの「pip」コマンドになります
kissgyorgy

1
@ kissgyorgyさんのコメントへの返信です。私はその問題を持っていた、この問題に関する最後のコメントは私のためにそれを解決しgithub.com/Homebrew/legacy-homebrew/issues/50607実行し、python3 -m pip install -U --force-reinstall pipその後、python -m pip install -U --force-reinstall pip戻ったにものを入れるpipのPython 2のを参照してくださいpip
ハリー

11

現在、HomebrewはPython 2と3に2つの異なる数式を提供していbrew install pythonます。python3をbrew install python@2インストールし、python2 をインストールします。Homebrewドキュメントの詳細:

https://docs.brew.sh/Homebrew-and-Python

現在Homebrew経由で2.xをインストールしている場合、Homebrewは次のようなメッセージを表示します。

Error: python 2.7.14 is already installed
To upgrade to 3.6.5, run `brew upgrade python`

実行すると:

brew upgrade python

あなたはできるはずです:

python --version

そして

python3 --version

インストールされているPython 2.xおよび3.xのバージョンを確認する。


6

または、おそらく「python3」と入力して最新バージョンのpython3.xを実行し、「python」または「python2」と入力してインストールされている最新の2.xバージョンを実行することもできます。


4

両方を使用する方法はありますが、今日最も簡単な解決策はpyenvを使用することです。pyenvを使用すると、バージョンを簡単に切り替えることができます。これが私がセットアップするためにしたことです:

ステップ1:

MacからすべてのPythonを削除する

 brew uninstall --ignore-dependencies --force python
 sudo rm -rf ~/miniconda3/
 sudo rm -rf ~/.conda/

以下を削除 ~/.bash_profile

export PATH="/Users/ishandutta2007/miniconda3/bin:$PATH"

また、以下から ~/.bashrc

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH
export PYTHONPATH=/usr/local/lib/python2.7/site-packages/google:$PYTHONPATH
alias python="/usr/bin/python"

STEP2

pyenvと必要なpythonバージョンをインストールする

brew update
brew install pyenv
pyenv install 2.7
pyenv install 3.7.0

STEP3

追加pyenv initしますbash_profileか、bashrc

echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

STEP4

インストールされているものを確認する

pyenv versions
  • システム(/Users/ishandutta2007/.pyenv/versionで設定)

    2.7

    3.7.0

STEP5:

デフォルトを選択

pyenv global 3.7.0

プロジェクトに古いバージョンが必要な場合は、そのルートフォルダーに移動して実行します

pyenv local 2.7

1

asdfを使用してください!

asdfのバラード

むかしむかしプログラミング言語
がありましたそれには多くのバージョンがありましたそれで
人々はそれの
ためにバージョンマネージャーを書きましたプロジェクトのバージョンを切り替えるために
異なる、古い、新しい。

その後、より多くのプログラミング言語
が登場し、バージョンマネージャーが増えました
、それらのための多くのコマンド

私はそれら
をたくさんインストールしました多くのコマンドを学びました

それから私は言った、もう1つのバージョンマネージャー
をもう記述します。

だから、他のバージョン管理が来た
空自のバージョン管理を - https://github.com/asdf-vm/asdf

拡張ので、バージョン管理
、誰でもプラグインを作成することができたために
、自分の好きな言語をサポートするには
ありませんが、より多くのバージョン管理をインストールする
以上のコマンドを学習します

https://github.com/asdf-vm/asdf
https://github.com/tuvistavie/asdf-python
https://github.com/asdf-vm/asdf-plugins


これらは競合するツールではなく、同じツールであり、言語ごとに1回(場合によっては複数回)実装されているように思えます。LSPのようなものが必要な理由、IMHOのようなものです。microsoft.github.io/language-server-protocol/overview
Matt Schlobohm 2018年

1

Pythonバージョン間を移動するという同じ要件があると思いましたが、Python3.6だけで必要なすべてを達成しましたhomebrew

git clone https://git.<theThingYouWantToInstall>

リポジトリに応じて、このオプション用にすでに設定されたMAKEファイルがあるかどうかを確認します。



-3

さて、pip3を持っていなかったので、Python3のbrewのインストールに苦労していました。

sudo pip3 command not found

そして私はそうしました

brew uninstall --force --ignore-dependencies python3

公式ディストリビューションから通常のPython 3.6.2をインストールしたところ、pip3があり、すべてのコンポーネントに問題はありませんでした。


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