14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pyenvを使ってpythonのバージョンが変更できない時の原因

Posted at

背景

python2のサポートが2019年いっぱいで終了してしまうということで、pythonのバージョンを簡単に切り替えることのできるpyenvを導入することにしました。
しかし、pyenvでのバージョン切替に少し躓いてしまったので、バージョン切り替えができない主な原因に関してまとめておきます。
python2サポート終了に関する記事
https://news.mynavi.jp/article/20191118-924132/

環境

MacOS Catalina 10.15.2
Homebrew 2.2.2
pyenv 1.2.16

バージョン変更できない原因

1. pyenvのパスが通っていない

pyenvをインストールするためにhomebrewで以下のようにインストールしました。

pyenvのインストール
$ brew install pyenv

インストールも無事に終わりいざpython3.7.6をpyenvでインストールしようと思ったのですが、なぜかpyenvが存在しないと言われました。通常はhomebrewでインストールした時は自動的に/usr/local/binにシンボリックリンクが作られパスが通るのですが、その時はなぜかパスが通っていませんでした。
どうやら事前にインストールされていた古いバージョンのpyenvを削除した関係かリンクが自動的に貼られなかったことが原因でした。
そのためhomebrewコマンドでリンクを貼り直したら、pyenvのパスが通るようになりました。

brewでリンク貼り
$ brew link pyenv
$ pyenv --version
pyenv 1.2.16

2. pythonコマンドパスの変更をしていない

次にpyenvでpython3をインストールして、バージョンを2から3に変更しました。
pyenvコマンドでバージョンを確認すると3.7.6となっているのに、pythonコマンドでバージョンを確認すると2.7.16となっており、なぜかバージョンを変更できていませんでした。

pythonバージョン変更
$ python --version
Python 2.7.16
# インストールできるバージョンを確認
$ pyenv install --list
Available versions:
  2.1.3
  2.2.3
  2.3.7
  2.4.0
  2.4.1
  2.4.2
  ・・・
# python3.7.6をインストール
$ pyenv install 3.7.6
# インストール済のバージョンを確認
$ pyenv versions
* system
  3.7.6
# バージョンを3.7.6に変更
$ pyenv global 3.7.6
$ pyenv versions
  system
* 3.7.6
# バージョンを確認
$ python --version 
Python 2.7.16

そこでpythonコマンドが見ている先のパスを確認しました。
するとその向き先は/usr/bin/pythonとなっていました。
pyenvでのバージョン管理をしているpythonを使用したい場合は、
コマンドの向き先のパスを~/.pyenv/shims/pythonに変更する必要があったのです。

pythonコマンドの向き先のパスを変更する
$ which python
/usr/bin/python
$ eval "$(pyenv init -)"
$ which python
~/.pyenv/shims/python
$ python --version
Python 3.7.6

無事バージョンを変更することができました。

まとめ

今回のpythonのバージョン変更作業を通して、プログラミング言語のバージョン管理は意外と面倒くさいなと感じました。
ただ、pythonに限らずどのプログラミング言語もバージョンアップは頻繁に行われています。
そして、どのコンテンツもそのハージョン変更に合わせて、メンテナンスをして新しいバージョンに合わせる必要があります。そのことを考えるとpyenvのように気軽にバージョンを変更できるツールも必要だなと感じました。
新しいコンテンツを作成するときはプログラミング言語のインストールと同時にその言語のバージョン管理を気軽に行える仕組みもまずは考えることが重要そうですね。

参考資料

pyenvのインストール、使い方、pythonのバージョン切り替えできない時の対処法
https://qiita.com/koooooo/items/b21d87ffe2b56d0c589b
[python]pyenvがバージョンを切り替える仕組みを理解する
https://akamist.com/blog/archives/2610
Homebrewにおけるlinkについて
https://hacknote.jp/archives/23816/

14
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?