web-dev-qa-db-ja.com

Mac OS Xでpython 2.7とpython 3.5を切り替える

私は通常Python 2.7を使用しますが、最近インストールされたPython 3.5はMac OS XでMinicondaを使用します。これら2つのバージョンのpythonには異なるライブラリがインストールされています。現在、ターミナルでキーワード「python」または「python3」のいずれかを入力すると、python 3.5が呼び出され、「python2」は「-bash:python2:command not found」を返します。それぞれエイリアス「python2」と「python3」を使用して具体的に呼び出すにはどうすればよいですか?

現在、OS X El Capitanを使用しています。

49
Viswanath

私見、macOSで2つの異なるPythonバージョンを使用する最良の方法はhomebrewを使用することです。 macOSで homebrewをインストール の後に、ターミナルで以下のコマンドを実行します。

brew install python@2
brew install python

これで、python2を呼び出してPython 2.7またはpython3を呼び出してPython 3を実行できます。これに加えて、 virtualenv または pyenv を使用して、python環境のさまざまなバージョンを管理できます。

私は個人的に miniconda を使用したことはありませんが、 ドキュメント からは、pipvirtualenvを組み合わせて使用​​することに似ているようです。

72
forevergenin

OSXのPythonバイナリ(バージョン2)は/usr/bin/pythonにあります

which pythonを使用すると、pythonコマンドの解決先がわかります。通常、サードパーティは/usr/local/bin(デフォルトでは/usr/binよりも優先されます)で物事を再定義します。修正するには、/usr/bin/pythonを直接実行して2.xを使用するか、誤った再定義を見つけます(おそらく/usr/local/binまたはPATHのどこかで)

13
John Wilkey

私はすでにpython3をインストールしており(miniconda3を介して)、その場合brew install pythonはpython2をインストールしないのでpython2をインストールする必要があるので、brew install python@2が必要になります。

エイリアスpython2は、/usr/bin/pythonからのpython2.xを参照します

エイリアスpython3は、/Users/ishandutta2007/miniconda3/bin/pythonからのpython3.xを参照します

エイリアスpythonは、デフォルトでpython3を参照します。

pythonをpython2のエイリアスとして使用するために、次を.bashrcファイルに追加しました

alias python='/usr/bin/python'

デフォルトとしてpython3に戻るには、必要に応じてこの行を削除します。

5
ishandutta2007

MacOS High Sierra 10.13.5にAnaconda3(Python 3.6)をインストールした場合、pythonバージョンを2.7に戻す方法

ホームディレクトリの.bash_profileファイルを編集します。

vi $ HOME/.bash_profile

#export PATH = "/ Users/YOURUSERNAME/anaconda3/bin:$ PATH"という行をハッシュアウトします

シェルを再度閉じて、Pythonを実行すると2.7が表示されるはずです。

3.6が必要な場合は、bashプロファイルのanaconda3行のコメントを外すだけです。

pythonのリンクを解除しようとすると、Mac OSXで涙が出ます。

あなたはこのようなものになります

unlink:/ usr/bin/python:操作は許可されていません

それが誰かを助けることを願っています!! :) :)

2
Jace

ジョン・ウィルキーの答えと同様に、which pythonを使用して/usr/bin/pythonを見つけ、.bash_profilealiasを作成するなどして、python2を実行します。

alias python2="/usr/bin/python"

pythonを呼び出してpython3を実行し、python2を呼び出してpython2を実行できるようになりました。

2
E.Hazledine

AppleのPython 2.7のシステムインストールを使用する場合は、 PEP 394 に記載されている命名基準に準拠していないことに注意してください。

特に、依存しないように指示された接尾辞2.7のオプションのシンボリックリンクが含まれます。また、指示された接尾辞2の推奨シンボリックリンクは含まれませんshouldに依存します。


これを修正したい場合は、AppleのPythonを使いながら、独自のシンボリックリンクを作成できます。

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

または、bash configのエイリアス:

alias python2 python2.7

必要に応じて、Appleの2to3、easy_installなどでも同様に行うことができます。

これらのシンボリックリンクを/usr/binに入れようとしてはならず、definitelyすでにあるものの名​​前を変更したり、distutilsの設定をもっとPEPに変更しようとしないでください準拠。これらのファイルはすべてOSの一部であり、OSの他の部分で使用できます。また、10.13.5から10.13.6へのマイナーアップデートなどで変更が上書きされる可能性があるので、そのままにしておきます上記のように。


または、次のこともできます。

  • コマンドラインやshbangsなどでpython2.7の代わりにpython2を使用するだけです。
  • 仮想環境またはconda環境を使用します。グローバルpythonpython3python2などは、アクティブ化された環境のローカルpythonを常に使用している場合は関係ありません。
  • Appleの2.7の使用をやめ、代わりに他の2.7全体をインストールします。他の回答のほとんどが示唆しています。 (なぜ多くの人が2番目の3.6をインストールすることを提案しているのかはわかりません。それは単にさらに混乱を追加するだけで、利益はありません。)
1
abarnert

@John Wilkeyからの回答をフォローアップします。

私のエイリアスpythonはpython2.7を表すために使用されていました(/usr/binにあります)。ただし、デフォルトのpython_pathの前には/usr/local/binpython3が付いています。したがって、pythonと入力すると、pythonバージョンも取得できませんでした。

/usr/local/binpython2にリンクを作成しようとしました:

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

python2に対してpythonを呼び出すときに機能します。

1
Chinh Sutran