OS XでPythonのデフォルトバージョンを3.xに設定する方法


329

Mountain Lionを実行していますが、基本的なデフォルトのPythonバージョンは2.7です。Python 3.3をダウンロードし、それをデフォルトに設定したいと思います。

現在:

$ python
    version 2.7.5
$ python3.3
    version 3.3

実行$ pythonするたびに3.3が開くように設定するにはどうすればよいですか?



でPythonのバージョンを管理できpyenvます。
Shin Kim

回答:


579

システム全体でデフォルトのpython実行可能ファイルのバージョンを変更すると、python2に依存する一部のアプリケーションが破損する可能性があります。

ただし、macOSのデフォルトシェル(10.14以降ではbash、10.15ではzsh)が同様の構文を共有しているため、ほとんどのシェルでコマンドのエイリアスを設定できます。エイリアスpython = 'python3'をyour ~/.profileに入れ~/.profileて、~/.bash_profileそして/またはyourにsource して次の~/.zsh_profileような行を書くことができます:

[ -e ~/.profile ] && . ~/.profile

このようにして、エイリアスはシェル全体で機能します。

これにより、pythonコマンドはを呼び出しますpython3。「元の」python(python2を指す)を呼び出す場合は、を使用できますcommand python。これにより、エイリアスはそのまま残り、すべてのシェルで機能します。

インタープリターをより頻繁に起動する場合(私はそうします)、追加するエイリアスをいつでも作成できます。つまり、

alias 2='python2'
alias 3='python3'

ヒント:スクリプトの場合、次のようなシバンを使用する代わりに:

#!/usr/bin/env python

使用する:

#!/usr/bin/env python3

このように、システムはpython3を使用してpython 実行可能ファイルを実行します


2
これは〜/ .bash_aliasesの代わりに〜/ .bash_profileに入れるべきではありませんか?
UnsettlingTrend 2016

4
入れalias python=python3た後、実行しているpython私のために動作しませんでしたOSXエルキャピタンの私の端末で。〜/ .bash_aliasesと〜/ .bash_profileの両方を保存しようとしました。
Haymaker87 2016

43
@ Haymaker87はファイルのsource ~/.bash_profile編集後に実行され~/.bash_profileます。
Wei Lu

15
あなたはピップのために同じことを行うことができます:alias pip='pip3.6'
スティーブン

@ surfer190はsudoで実行すると問題が発生しますね。
Santosh Kumar

142

シンボリックリンクで解決できます。

unlink /usr/local/bin/python
ln -s /usr/local/bin/python3.3 /usr/local/bin/python

25
これは正解です(エイリアスは適切ですが、bashからのみアクセス可能であり、呼び出し元を制限しています)。ただし、シンボリックリンクを削除するunlink代わりにrmを使用します(誤って末尾にスラッシュを追加すると、rmいくつかの悪い結果になる可能性があります)。または、ln -s -f ...現在のシンボリックリンクを上書きするようにすることもできます。
Chad Befus 2017年

2
@ChadBefusお返事ありがとうございます。私はあなたの意見に同意します。unlinkはrmより安全です。
Kim Kim

3
予想pythonされるスクリプトに何らかの影響がありpython2.7ますか?
アントンタラセンコ2017年

19
macOS:unlink: /usr/bin/python: Operation not permitted
MarksCode 2018年

4
(つまり、単に第2の原ラインを実行しよう@MarksCode ln -s... 付き /local/)。
EliadL 2018

42

〜/ .bash_profileファイルを開きます。

vi ~/.bash_profile

次に、エイリアスを次のように入力します。

alias python='python3'

次に、ファイルを保存してから〜/ .bash_profileファイルを実行します。

source ~/.bash_profile

おめでとうございます!!! これで、pythonと入力してpython3を使用できます。

python --version

Python 3.7.3


私が行ったように、同じ問題がpipにも当てはまることがわかった場合(つまり、pip --versionはまだ2.7.xです)、pip3にも同じ手順を実行する必要があります。vi〜/ .bash_profile、エイリアスpip = 'pip3'、ソース〜/ .bash_profile、pip --version
SnellyBigoda

source ~/.bash_profile端末を再び開くたびに本当に必要ですか?ターミナルを閉じてもう一度開くと、python2に戻ります。
リッキーアギラール

21

端末タイプに移動:

alias python=python3.x

これにより、デフォルトのpythonがpython3.xとしてセットアップされます


1
これは私にとってはうまくいきましたが、「alias python = python3」を使用しています
Discant

これにより、そのターミナルインスタンスのPythonバージョンが一時的に設定されます。
Ashwin R


10

私はこの問題のゲームに少し遅れましたが、私はこの問題を自分で発生したばかりなので、更新された回答を投稿する必要があると思いました。これはMacベースのセットアップにのみ適用されることに注意してください(Windowsやその他のLinuxで試したことはありません)。

これを機能させる最も簡単な方法は、Brewを介してPythonをインストールすることです。brewをインストールしていない場合は、まずそれを行う必要があります。インストールしたら、ターミナルで次の手順を実行します。

brew install python

これによりPython 3がインストールされます。インストール後、次のコマンドを実行します。

ls -l /usr/local/bin/python*

brewが作成したPythonインストールへのすべてのリンクが表示されます。次のようになります。

lrwxr-xr-x  1 username  admin  36 Oct  1 13:35 /usr/local/bin/python3@ -> ../Cellar/python/3.7.4_1/bin/python3
lrwxr-xr-x  1 username  admin  43 Oct  1 13:35 /usr/local/bin/python3-config@ -> ../Cellar/python/3.7.4_1/bin/python3-config
lrwxr-xr-x  1 username  admin  38 Oct  1 13:35 /usr/local/bin/python3.7@ -> ../Cellar/python/3.7.4_1/bin/python3.7
lrwxr-xr-x  1 username  admin  45 Oct  1 13:35 /usr/local/bin/python3.7-config@ -> ../Cellar/python/3.7.4_1/bin/python3.7-config
lrwxr-xr-x  1 username  admin  39 Oct  1 13:35 /usr/local/bin/python3.7m@ -> ../Cellar/python/3.7.4_1/bin/python3.7m
lrwxr-xr-x  1 username  admin  46 Oct  1 13:35 /usr/local/bin/python3.7m-config@ -> ../Cellar/python/3.7.4_1/bin/python3.7m-config

この例の最初の行は、python3シンボリックリンクを示しています。これをデフォルトのpythonシンボリックリンクとして設定するには、次のコマンドを実行します。

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

設定したら、次のことができます。

which python

そしてそれは示すはずです:

/usr/local/bin/python

そのシェルで新しいシンボリックリンクを使用するには、現在のターミナルシェルをリロードする必要がありますが、新しく開いたすべてのシェルセッションは自動的にそれを使用する必要があります。これをテストするには、新しいターミナルシェルを開いて次を実行します。

python --version

すばらしい作品(参考文献
Nepo Znat

9

「アプリケーション」に移動し、「Python」フォルダに移動します。「シェルプロファイルの更新.command」などと呼ばれるbashスクリプトが必要です。そのスクリプトを実行すると、実行されます。

更新:それを更新すべきではないようです:デフォルトのpythonバージョンを変更する方法?


8

これでうまくいきました。エイリアスを追加して端末を再起動しました:

alias python=/usr/local/bin/python3

6

ここに上陸した人のほとんどはZSHの徹底したitermなどを使用していると思います。それがこの答えです。

~/.zshrc代わりにコマンドを追加/変更する必要があります。


3

これがOS Xで利用できるかどうかはわかりませんが、Linuxではmoduleコマンドを使用します。 こちらをご覧ください

modulefileを正しく設定し、次のようなものをrcファイルに追加します(例:〜/ .bashrc):

module load python3.3

これにより、システムのデフォルトに影響を与えることなく、ログイン時に必要に応じてパスが切り替わります。


3

Pythonをインストールすると、エクスポートパスステートメントが〜/ .bash_profileファイルに挿入されると思います。そのため、Python 2を使用する予定がない場合は、そのステートメントをそこから削除できます。上記のエイリアスは、そのための優れた方法でもあります。

〜/ .bash_profile-vim ./.bash_profile-参照を削除する方法(別名:export PATH = "/ Users / bla / anaconda:$ PATH")-保存して終了-ソース./変更を保存するための.bash_profile


それは起こりません
co2f2e 2017

3
$ sudo ln -s -f $(which python3) $(which python)

完了しました。


2

MacでPython 3をデフォルトとして設定する正しい方法と間違った方法

この記事の著者は、デフォルトのpythonを設定する3つの方法について説明しています。

  1. してはいけないこと。
  2. 私たちができること(しかしすべきではないこと)。
  3. 私たちがすべきこと!

これらの方法はすべて機能しています。あなたはどちらが良いかを決定します。


1

を使用している場合は、を使用してvirtualenvwrapper検索し、を使用which virtualenvwrapper.shしてそれを開くvimか、他のエディターを使用して、次のように変更します。

# Locate the global Python where virtualenvwrapper is installed.
if [ "${VIRTUALENVWRAPPER_PYTHON:-}" = "" ]
then
    VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
fi

VIRTUALENVWRAPPER_PYTHON="$(command \which python)"をに変更しVIRTUALENVWRAPPER_PYTHON="$(command \which python3)"ます。


1

私にとっての解決策は、PyCharmを使用して、デフォルトのpythonバージョンを、私が使用する必要があるバージョンに設定することでした。

PyCharmをインストールし、ファイル==>プリファレンスに移動して新しいプロジェクトを作成し、プロジェクトに必要なインタープリターを選択します。この場合はpython 3.3です。


1

macportsを使用する場合、エイリアスや環境変数を操作する必要はありません。このQ&Aで説明されているmacportsがすでに提供している方法を使用するだけです。

方法:MacportsがPythonを選択する

TL; DR:

sudo port select --set python python27

1

macportsを使用している場合は、より簡単な方法があります。

実行:

port install python37

インストール後、デフォルトを設定:

sudo port select --set python python37

sudo port select --set python3 python37

コマンドウィンドウを再起動し、終了します。


1

ええと...ちょっと古いです。しかし、それでも良い答えに値します。

そして良いのは、MacのデフォルトのPythonに触れたくないということです。

Homebrewなどを使用して必要なPythonバージョンをインストールし、virtualenvで使用します。Virtualenvはしばしばがらくたに似ていると考えられていますが、それでも、Pythonバージョンをシステム全体(macOSがそのようなアクションから保護する可能性が高い)やユーザー全体、bash全体などを変更するよりはずっと良い方法です。デフォルトのPythonを忘れてください。venvのような遊び場を使用することは、OSが最も、最も感謝することです。

たとえば、最近の多くのLinuxディストリビューションでは、Python2をそのままインストールせずに、システムにPython3のみを残しています。しかし、依存関係としてpython2を使用して古いものをインストールしようとするたびに、私が何を意味するのか理解してほしい。優れた開発者は気にしません。優れた開発者は、希望するPythonバージョンでクリーンな遊び場を作成します。


0

Macユーザーは、ターミナルで次のコードを実行するだけです

brew switch python 3.x.x

3.xxは新しいpythonバージョンである必要があります。

これにより、すべてのシステムリンクが更新されます。


0

pythonをpython3にエイリアスする提案は、pythonのバージョンを設定する仮想環境で問題を引き起こします(例:pyenv)。pyenvを使用すると、次のようにバージョンをグローバルに設定できます。

pyenv global 3.8.2

その後、特定のプロジェクトで、Pythonバージョンを含む.python-versionファイルを作成できます。

pyenv local 2.7.1

これは、私の意見では、システムで複数バージョンのpythonを管理するための最良の方法です。

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