質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

3666閲覧

pythonとターミナルで打つとPython3で実行されるように変更したい

退会済みユーザー

退会済みユーザー

総合スコア0

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/04/19 08:18

編集2020/04/20 00:51

前提・実現したいこと

pythonとターミナルで打つとPython3で実行されるように変更しようとしています。

現在、Pythonのバージョンは以下になっていますが、ライブラリのインストールなどでPython3以上を主に使うので、pythonとターミナルで打つとPython3.7.4で動作するようにしたいです。

$ python -V Python 2.7.16

pyenvは以下のようになっています。

$ pyenv versions system 3.6.0 * 3.7.4 (set by /Users/username/.pyenv/version)

発生している問題・エラーメッセージ

解決方法の一つとして、記事「Python 3 インストール Homebrew によるインストール(Mac)」に以下のような記述があったのですが、現在の~/.bash_profileをどのように変更したら良いのかわからず、困っています。

python と打ち込んで Python 3 が動くようにしたければ,/usr/local/opt/python/libexec/bin のパスを /usr/bin より先に設定します。

該当のソースコード

~/.bash_profile

bash

1export PYENV_ROOT="$HOME/.pyenv" 2export PATH=/usr/local/bin:$PATH 3eval "$(pyenv init -)" 4export PYENV_ROOT=${HOME}/.pyenv 5if [ -d "${PYENV_ROOT}" ]; then 6 export PATH=${PYENV_ROOT}/bin:$PATH 7 eval "$(pyenv init -)" 8fi 9 10export PATH=/usr/lib/postgresql/11.5/bin/:$PATH 11export PATH=$HOME/.nodebrew/current/bin 12export PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"# for nodebrew 13export PATH=$HOME/.nodebrew/current/bin:$PATH 14

試したこと

peenを用いて、全ての環境のPythonのバージョンを3.7.4にしようと試みましたが、失敗に終わりました。

bash

1$ pyenv global 3.7.4 2$ source ~/.bash_profile 3$ python -V 4Python 2.7.16

ご回答を受けて試したこと

~/.bash_profileを2通りの方法で修正しましたが、pythonとターミナルで打つとPython3で実行することができておらず、検索しても類似の問題が出てこなくて困っている状態です。

export PATH=/usr/local/bin:$PATHexport PATH=$HOME/.pyenv/bin:$PATHに書き換えた場合

bash

1export PYENV_ROOT="$HOME/.pyenv" 2export PATH=$HOME/.pyenv/bin:$PATH 3eval "$(pyenv init -)" 4export PYENV_ROOT=${HOME}/.pyenv 5if [ -d "${PYENV_ROOT}" ]; then 6 export PATH=${PYENV_ROOT}/bin:$PATH 7 eval "$(pyenv init -)" 8fi 9 10export PATH=/usr/lib/postgresql/11.5/bin/:$PATH 11export PATH=$HOME/.nodebrew/current/bin 12export PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"# for nodebrew 13export PATH=$HOME/.nodebrew/current/bin:$PATH 14

以下の結果に

bash

1$ type python 2python is /usr/bin/python 3$ python -V 4Python 2.7.16

export PATH=/usr/local/bin:$PATHに加えてPATH=$HOME/.pyenv/bin:$PATHを書き加えた場合

bash

1export PYENV_ROOT="$HOME/.pyenv" 2export PATH=/usr/local/bin:$PATH 3PATH=$HOME/.pyenv/bin:$PATH 4eval "$(pyenv init -)" 5export PYENV_ROOT=${HOME}/.pyenv 6if [ -d "${PYENV_ROOT}" ]; then 7 export PATH=${PYENV_ROOT}/bin:$PATH 8 eval "$(pyenv init -)" 9fi 10 11export PATH=/usr/lib/postgresql/11.5/bin/:$PATH 12export PATH=$HOME/.nodebrew/current/bin 13export PATH="/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"# for nodebrew 14export PATH=$HOME/.nodebrew/current/bin:$PATH

の場合、以下の結果に

bash

1$ type python 2python is hashed (/usr/bin/python) 3$ python -V 4Python 2.7.16 5

###type pyenvpyenv init -の実行結果

$ type pyenv pyenv is a function pyenv () { local command; command="${1:-}"; if [ "$#" -gt 0 ]; then shift; fi; case "$command" in rehash | shell) eval "$(pyenv "sh-$command" "$@")" ;; *) command pyenv "$command" "$@" ;; esac } $ pyenv init - export PATH="/Users/username/.pyenv/shims:${PATH}" export PYENV_SHELL=bash source '/usr/local/Cellar/pyenv/1.2.13_1/libexec/../completions/pyenv.bash' command pyenv rehash 2>/dev/null pyenv() { local command command="${1:-}" if [ "$#" -gt 0 ]; then shift fi case "$command" in rehash|shell) eval "$(pyenv "sh-$command" "$@")";; *) command pyenv "$command" "$@";; esac }

補足情報(FW/ツールのバージョンなど)

macOS Catalina バージョン10.15.4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

あなたのデフォルトシェルは/bin/bashですか?

最近のMacOSXのデフォルトシェルは/bin/zshに変わりました。

もし、/bin/zshを使っているのなら、.bash_profileではなく、
.zprofile
にPathやpyenvの設定を記述してみてください。

ちなみにデフォルトシェルの確認方法はコンソールから
$ echo $SHELL
です。

投稿2020/04/19 08:27

technocore

総合スコア7200

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/19 09:29

ご回答いただきましてありがとうございます。/bin/zshを使っているかどうかはどのようにして確認できるのでしょうか。`$ echo $SHELL`では、`/bin/bash`と表示されました。
technocore

2020/04/19 09:37

>`$ echo $SHELL`では、`/bin/bash`と表示されました。 bash使っているのですね。でしたら設定ファイルは、.bash_profileで合っています。 私の.bash_profileの設定では、必要なPATHを設定して最後に1行、pyenvの設定を書いてます。 export PATH=必要なPATHの設定:${PATH} export PATH=必要なPATHの設定:${PATH} if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi
退会済みユーザー

退会済みユーザー

2020/04/19 13:05

ありがとうございます。「必要なPATHの設定」というのはどのように調べられるのでしょうか。また。「export PATH=必要なPATHの設定:${PATH}」を二回続けて書いているのはなぜでしょうか。
technocore

2020/04/19 13:15

>二回続けて書いているのはなぜでしょうか。 短く分けて書く方が見やすいし、メンテ(PATHの追加とか削除)が しやすいからです。全部のPATHを1行で書くと見にくいでしょう。 homebrewを使っているなら、sbin、bin、optあたりはPATHに追加すればいいです。 たとえばこんな感じで。 export PATH=/usr/local/sbin:${PATH} export PATH=/usr/local/bin:${PATH} export PATH=/usr/local/opt:${PATH} if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi あとは、あなたの環境に合わせて他のアプリのPATHを追加していけばいいです。
退会済みユーザー

退会済みユーザー

2020/04/20 01:06

ありがとうございます。「あなたの環境に合わせて他のアプリのPATHを追加」とありますが、今回の「pythonとターミナルで打つとPython3で実行されるように変更」するためには現在の書き方では実行できず、そのためにどう変更すればいいかはどのように調べればいいのでしょうか。
technocore

2020/04/20 01:44

>「あなたの環境に合わせて他のアプリのPATHを追加」 この一文は、他に追加したいパスが有れば同じように記述してください、と言う意味で書きました。混乱させてすみません。
guest

0

ベストアンサー

python と打ち込んで Python 3 が動くようにしたければ,/usr/local/opt/python/libexec/bin のパスを /usr/bin より先に設定します。

というのは、そのページに従って Homebrew でPython3をインストールした場合でしょう。あなたの場合は、pyenvでインストールしちゃっているので関係ありません。

pyenvを~/.pyenvにインストールしたのであれば、~/.bash_profileまたは~/.zprofileに、

sh

1PATH=$HOME/.pyenv/bin:$PATH 2eval "$(pyenv init -)"

を追加してください。

上記を実行した上で、type pythonで、pyenvのものになっていることを確認しましょう。なっていなければpyenvのインストール先の認識が違います。

pyenvなどを利用するには、「PATH」と「カレントディレクトリ」の理解が必須なので、理解できてない場合は、pyenv使わないで別の方法でPythonをインストールしたほうがいいです。とはいえ、プログラミングするなら、「PATH」と「カレントディレクトリ」の理解はどうせ必要なので、この機会に理解すると良いかと思います。

投稿2020/04/19 09:35

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/04/19 13:03

ご回答いただきましてありがとうございます。現状を「ご回答を受けて試したこと」に追記致しましたが、「なっていなければpyenvのインストール先の認識が違います。」とありましたが、この場合どうすれば良いのでしょうか。
otn

2020/04/19 13:24

.bash_profileを修正したら、source .bash_profile は行っていますよね? type pyenv と pyenv init - の実行結果を載せてください。 あるいは、pyenvをあきらめて、 > 理解できてない場合は、pyenv使わないで別の方法でPythonをインストールしたほうがいいです。 とするか。
退会済みユーザー

退会済みユーザー

2020/04/20 00:54

source .bash_profile は行っています。実行結果の追記をいたしました。「pyenv使わないで別の方法でPythonをインストール」という方法について、pyenv以外でインストールしたことはありますが、その際もpythonとターミナルで打つとPython3で実行ができず、今回の方法にたどり着いたので、bash_profileを修正する他ないという状況だと理解しています。
otn

2020/04/20 03:36 編集

ああ、わかりました。eval "$(pyenv init -)" したあとでPATHの先頭にシステムのディレクトリを追加しているからです。 PATH=$HOME/.pyenv/bin:$PATH eval "$(pyenv init -)" は、末尾に追加してください。それ以降の行で、PATHの先頭に何かを追加するときは意味を把握した上でやりましょう。 他のpyenv関係は全部削除。 「設定ファイルの末尾に追加しなさい」というのを言われるがままにやるとこうなりますので、どちらを前に書いて、どちらを後ろに書くかはよく考えましょう。 そのためには、 ・PATHの意味を理解する ・自分が何をしているのか理解する
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問