brewでインストールされたPythonをデフォルトのPythonとして使用するにはどうすればよいですか?


185

Mac OS X 10.6.2で(finkとmacportを使用した後で)Homebrewに切り替えようとしました。私はPython 2.7をインストールしました

brew install python 

問題は、Macportとは対照的に、python_selectユーティリティがないようで、私のデフォルトのMac Pythonは常にデフォルトです

which python

ください

/usr/bin/python

かつ/usr/bin/pythonシンボリックリンクではありません

python brewフレーバーをデフォルトのpythonにするにはどうすればよいですか?


14
Homebewはpythonのシステムインストールをシャドウしなくなりました。あなたは行うことができます:export PATH="/usr/local/opt/python/libexec/bin:$PATH"ソース:discourse.brew.sh/t/...
ジョージ・

3
私は上記のすべての回答を試しましたが、/ usr / local / binは$ PATHの/ usr / binの前にあります。brew linkとunlinkを試してみましたが、brew doctorは/ usr / local / binの前に/ usr / binがあることを報告していませんでした。それでも、どのpythonを実行しても、brewでインストールされたものではなく、/ usr / bin / pythonを取得します。
Ujwal Ratra 2017

試してみてください... python2
Fraser

回答:


117

Homebrewを使用しているので、次のコマンドを使用するとより適切な画像が得られます。

brew doctor

出力:

==> / usr / binは/ usr / local / binの前に出現します。これは、Homebrewが提供するプログラムの代わりにシステム提供のプログラムが使用されることを意味します。これは例えばあなたが問題である場合。インストールされたPythonをbrewします。

$ PATHで/ usr / binの前に/ usr / local / binを配置するように.bash_profileを編集することを検討してください。


4
パスに/ user / local / bin TWICEが含まれていないことを確認してください。どういうわけか、私のPATHには/ usr / binの前後両方に表示されて、私を狂わせていました。
-vinaut

1
多くのプログラムはヘッダーで/ usr / bin / pythonを使用しており、これは実行可能なソリューションではありません。
mschuett 2015

5
High Sierraでの抽出はpython2/ usr / local / binにありpythonます。セット export PATH="/usr/local/opt/python/libexec/bin:$PATH"~/.bash_profile
tormodatt

86

参照:Homebrewでpythonをsymlinkする方法?

$ brew link --overwrite python
Linking /usr/local/Cellar/python/2.7.3... 28 symlinks created
$ which python
/usr/local/bin/python

10
pythonをbrewでインストールするとなぜこれが起こらないのですか?
ベンウェスト

4
@BenWestはpython3なので、今ではpythonではなくpython2を取得します。
georgexsh 2017

1
有効にしていません。
theonlygusti 2018

1
私の場合、このコマンドを実行した後、ターミナルを再起動する必要がありました(Martijn Courteauxの回答に示されています
jkmartindale

2
これは私のためにpython @ 2をリンクします
Andrew B.

63

クイックフィックス:

  1. 開いた /etc/paths
  2. 行の順序を変更する(最優先)

私の場合/etc/pathsは次のようになります:

/usr/local/bin
/usr/local/sbin
/usr/bin
/bin
/usr/sbin
/sbin

OSXのパスについて詳しく知りたい場合、この記事は非常に役に立ちました。

http://muttsnutts.github.com/blog/2011/09/12/manage-path-on-mac-os-x-lion/


1
ありがとう、上記の回答はすべて私の問題を解決しましたが、あなたは解決しました!どうもありがとうございます!
ショーン

7
これの問題は、すべてのユーザーに対して変更することです:/、IMOより具体的なものを変更することをお勧めします。
ランドールハント

@RandallHunt何がどのように?
マイクコルメンディ

61

自作インストーラー自体が示唆しているように、これを.bashrcやに追加してください.zshrc

export PATH="/usr/local/opt/python/libexec/bin:$PATH"

11
これはHigh Sierraでは正しい方法です。投票してください!
tormodatt

MacOSはデフォルトでzshターミナルに設定されているため、変更が必要なの.zshrc.bashrcファイルではなくファイルである可能性があります。
user394430

1
これを除いて、他の答えはどれも私にとってうまくいきませんでした!ここでmacOS Catalinaを実行しています。ありがとう!
Ali Akbar

44

OSX High Sierraで「brew install python」を実行しました。$PATH持っていた/usr/local/bin他のパスの前に、まだwhich pythonシステムのパイソンを指しました。

よく見ると、Python実行可能ファイルがにないことがわかりました/usr/local/bin。実行可能ファイルの名前はpython2です。この問題を修正するには、以下をpython指すシンボリックリンクを作成しますpython2

/usr/local/bin $: ln -s python2 python


4
ハイシエラの問題が修正されたことを確認
RandomDeduction 2018

あなたは私のヒーローです。私がこの解決策を知らなかったなんて信じられない!
スモーキンジョー

3
また、適用のためにターミナルを再起動する必要があります
lexa-b '27 / 02/27

3
$ cd / usr / local / bin $ ln -s python3 python
Pnemonic

1
そして、私はまた、sym-link pip to pip3(またはpip2)を仮定しますか?
alexP_Keaton 2018

23

Homebrewは "/ usr / bin"にあるものを置き換えません。パスの「/ usr / bin」の前に「/ usr / local / bin」を置くだけで、「which python」で「/ usr / local / bin / python」が得られます。

/ usr / bin / python(または/ usr / bin / ruby​​)の置き換えは、あまりお勧めできません。


1
しかし、そうではありません!
theonlygusti 2017年

22

python数式は現在python3(v3.6.5)を使用しており、brewはディレクトリをリンクします。

/usr/local/opt/python -> ../Cellar/python/3.6.5

また、バイナリをリンクします。

/usr/local/bin/python3 -> ../Cellar/python/3.6.5/bin/python3

それでも使用する必要がある場合はpython2.x、以下を使用します。

brew install python@2

homebrewを使用するにpythonは、そのディレクトリをPATHに配置します(bashの場合)。

export PATH="/usr/local/opt/python/libexec/bin:$PATH"

魚用:

set -x PATH /usr/local/opt/python/libexec/bin $PATH

注意:

  1. これを行うと、システムのデフォルトバージョンがシャドウされます。 python
  2. /usr/local/share/python以前のバージョンでは、homebrewはpythonをにリンクしていました。

これは私にとってのトリックでした。デフォルトでは、brewは.exeというexec ではなくpython3パスにインストールされます。特に、パス内の他のディレクトリの前に参照すると、ソートされたものになります。python/usr/local/opt/python/libeexec/bin
cam8001

13

$ PATHを変更し、これをbashrcまたはbash_profileに追加します。

export PATH=/usr/local/bin:/usr/local/sbin:~/bin:$PATH

詳細はこちらをクリック: 問題#89791


私のエディター「PyCharm」は〜/ .bashrcを使用しており、この小さなgemまでbrewのpythonを動作させることができませんでした。ありがとう@Aben
JamesDeHart 16

10

PATH環境変数を編集して、homebrew pythonが配置されている場所が/ usr / binの前に検索されるようにする必要があります。また、シェル構成でPYTHONのような変数を目的のバージョンのpythonに設定して、コマンドラインからでは$PYTHONなく呼び出すように設定することもできますpython

また、別の投稿者が述べたように(特にMacの場合)、/ usr / binにあるpythonをいじって、別のpythonインストールを指すようにしないでください。あなたがするなら、あなたはただトラブルを求めているだけです。


9

私はそうしましたbrew install python、私$PATHは良かったです、それでも、which python私にシステムをインストールしてくれました。端末を再起動すると修正されました。


1
これは私がする必要があるすべてです。ただし、これをいつ行うかはわかりません。ただ実行してbrew install pythonからターミナルを再起動するだけのように聞こえますか?brew unlink&する必要はありませんbrew linkか?
Con Antonakos 16

brewを使用してpythonをインストールした直後、「which python」は正しいローカルpythonパスを提供しますが、「python」コマンドは、システムが起動をインストールしたものであることを示しました。再起動ターミナルはそれを修正しました。
ミシェル

2
ターミナルを再起動する必要はありません。試してくださいhash -r
georgexsh

JFC、これを読むまで、私は迷っていました。私はすでにbrew unlink & brew link何回かやった。ターミナルの再起動のみに必要
ドミニク

6

python今を指しpython3、あなたが必要な場合は、python 2実行した後: brew install python@2その後、あなたの.zshrcや.bashrcのファイルでは export PATH="/usr/local/opt/python@2/libexec/bin:$PATH" 今、pyhon --version= Pythonの2.7.14とpython3 --version=のPython 3.6.4。それが私の端末で見慣れている動作です。


5

私は自作のpythonをデフォルトにする手段があると信じていますが、私の意見では、問題を解決する適切な方法は、システムのpythonパスを台無しにすることではありません:自作のpythonがデフォルトになるvirtualenvを作成することをお勧めします(virtualenv -pythonオプション)。のようなツールを使用することpython_selectは、ほとんど常に悪い考えです。


1

ただやる:

brew install python
brew link python

その後、これをbashrcまたはbash_profileに追加します。

alias python='/usr/local/bin/python2'

楽しい!


私と同じ問題が発生したようです。brewが作成するすべてのリンクは、linkここでの回答のコマンドを使用して/usr/local/binも、python2ではなくのためのものpythonです。これを回避するためにエイリアスを使用することは悪い考えのように思えますが、まだ何も見つかりません。
Patrick M

エイリアスではなく、コピーしただけで問題なくcp /usr/local/bin/python2 /usr/local/bin/python動作したようです。これはさらに醜い回避策ですか?
kingb12 2017

1

/usr/local/opt/python/libexec/bin明示的に追加します.bash_profile

export PATH="/usr/local/opt/python/libexec/bin:$PATH"

その後、正しく動作するはずです。


1

魚の殻なら

echo 'set -g fish_user_paths "/usr/local/opt/python/libexec/bin" $fish_user_paths' >> ~/.config/fish/config.fish

1

Pythonのバージョンをインストールして切り替えるには、代わりにpyenvを使用してください。同じことをするrbenvを何年も使っていますが、Rubyについてです。それ以前は、バージョンを一気に管理していました。

相談するpyenvのgithubのページをインストール手順について。基本的には次のようになります:-homebrewを使用してpyenvをインストールします。brew install pyenv -シェル起動スクリプトの最後に関数を追加して、pyenvが魔法をかけることができるようにします。echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile

  • pyenvを使用して、必要なPythonのさまざまなバージョンをインストールします。pyenv install 3.7.7
  • デフォルト(グローバル)バージョンを、インストールしたばかりの最新バージョンに設定します。pyenv global 3.7.7
  • 異なるバージョンのPythonを使用する必要があるプロジェクトで作業している場合は、を調べてくださいpyevn local。これにより、Pythonのバージョンを指定するファイルがプロジェクトのフォルダーに作成されます。Pyenvは、グローバルpythonバージョンをそのファイル内のバージョンでオーバーライドするように見えます。

0

/ etc / pathsを編集できます。これが私のものです:

/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin

次に、Pythonバージョンのシンボリックリンクを追加します。私の場合

$ cd /usr/local/bin
$ ln -s python3 python

出来上がり!


0

High Sierra以降、以下を使用する必要があります。

sudo chown -R $(whoami) $(brew --prefix)/*

これは、/usr/localchownできなくなったためです


-7

デフォルトのPythonとはどういう意味かわかりません。システムPythonインタープリターを別のバージョンに置き換えるのは悪い習慣だと思います。システムの機能、システムのPythonと特定のモジュール、または特定のPythonバージョンに何らかの形で依存している場合があります。代わりに、安全な別の場所にカスタムPythonインストールをインストールし、必要に応じて$ PATHを調整して、デフォルトのPythonを探すのではなく、パスルックアップでPython を呼び出します


5
os xでは、システムのpythonがパスの前に来るので、自作のpythonが来るリスクはありません。これは非常に一般的です。
Steven Noble

3
また、Apple以外のPythonを使用する必要があるのも本当です。私はmatplotlib、NumPy、SciPyを「デフォルト」(別名Apple)Pythonで起動して実行しようとしています。32/64ビットの扱いについては、単に拡張機能をバラバラにしています。代わりに、素晴らしいBrewを用意できてとてもうれしいです。そして、デフォルトで( 'brew install python')Brewは、あなたが言っていることを正確に実行します-2番目のPythonを別の構造にインストールします。
akauppi 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.