pyenvを用いてpython環境構築+トラブルシューティング

投稿者: | 2020年12月23日

macのpython環境はhomebrewで入れていたのですが、アップデートしてまたpathを通してというのはめんどくさいので、pyenvを用いて環境構築してみました。

1.pyenvのインストール

とりあえずhomebrewをアップデートします。

brew update

そしてpyenvをインストールします。

brew install pyenv

pyenvのバージョンが確認できたらインストール完了です。

pyenv version
3.9.0 (set by /Users/jago39/.pyenv/version)

2.pyenvを用いてpythonをインストール

次のコマンドを実行してインストール可能なpythonのバージョンを確認します。

pyenv install --list

ずらーっと出てくるので、その中で必要なバージョンがあるか確認します。

今回は3.9.0をインストールするので次のコマンドを実行してインストールします。

pyenv install 3.9.0

インストールが終了したらバージョンを切り替えます。

pyenv global 3.9.0

インストールされているすべてのバージョンを確認したい場合は次のコマンドで確認できます。

pyenv versions

“version”だとpyenvのバージョンが表示されてしまうので注意です。

次のように表示されます。

  system
  3.8.6
* 3.9.0 (set by /Users/jago39/.pyenv/version)

何もインストールされていない場合はsystemだけが表示されます。また、globalで設定されているバージョンの横にはアスタリスクが付きます。

3.[トラブルシューティング]バージョンが切り替わらない

コマンドを実行したのにバージョンが切り替わらないことがあります。

まずは、どのpathが通っているのか確認します。

which python

pyenvでインストールしたpythonのpathが通っている場合は次のように表示されます。

/Users/jago39/.pyenv/shims/python

これが、次のようになっている場合pathが通っていません。

/user/bin/python

3-1.pathを通す

.bash_profileに追記します。

echo 'export PYENV_ROOT="${HOME}/.pyenv"' >> ~/.bash_profile
echo 'export PATH="${PYENV_ROOT}/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile

そして、

source ~/.bash_profile

を実行します。

しかし、私の環境ではこれでも切り替わりませんでした。

3-2.解決策

次のコマンドを実行します。

pyenv init

すると次のように表示されます。(途中でshellをfishにしたのでこのような表示になっています。)

# Load pyenv automatically by appending
# the following to ~/.config/fish/config.fish:

pyenv init - | source

一番下に書かれているコマンドを実行します。

これでバージョンが切り替わります。確認しましょう。

python --version
Python 3.9.0

3-3.追記(2021/02/04)

途中でshellをfishに変更したと書いています。fish shellはbashのconfigの書き方が異なるため、これだとbranchを変更したときなどにpythonのバージョンがsystemに切り替わってしまします。

fish shellのconfigファイルのパスは次のとおりです。

.config/fish/config.fish

このファイルを開いて次の行を追加する方法があります。

source (pyenv init -|psub)

または、コマンドで書き込む方法もあります。

echo 'source (pyenv init -|psub)' >> ~/.config/fish/config.fish

その後、3-2の手順を行います。

4.VScodeにpythonを正しく認識させる

windowsで行ったことをmacでも行います。

まずはpythonのpathを確認します。

which python

私の環境の場合は次の場所でした。

/Users/jago39/.pyenv/shims/python

次にVScodeのsetting.jsonを開き、次の1文を追加します。値は先程確認したパスです。

"python.pythonPath": "/Users/jago39/.pyenv/shims/python",

VScodeを再起動すれば完了です。

5.おわりに

バイト先で調べながら作業をしていましたが、試行錯誤しても使った通信容量が100MB程度だったので、思ったほどじゃないなと思いました。ぶっちゃけバイト先のツール作成なのにバイト先のwifi使えないのどうなんだろうって感じなんですけど。

6.参考文献

pyenvとpyenv-virtualenvの自分流使い方

pyenvでPythonのバージョンを切り替えられない場合の対処法+

VSCodeのpyhton環境(pyenv)を整える(MacOS, flake8+autopep8)

[python を入れる](https://nju33.com/notes/fish-shell/articles/python を入れる)

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください