Pythonのバージョンを簡単に切り替える方法【pyenv】
- 作成日: 2022-03-25
- 更新日: 2023-12-25
- カテゴリ: Python
Pythonのバージョンを簡単に切り替える方法
Pythonのバージョンを切り替えたい場合があると思います。
使っているPythonのバージョンが古くなって、新しいバージョンに切り替える場合などですね。
そういう時に簡単にPythonのバージョンを切り替えられるツールがあります。
それが「pyenv」です。
pyenvを使えばPythonのバージョンの切り替えはすぐに行えます。
この記事ではpyenvの使い方について具体的に解説します。
関連記事
頭が悪い人のPythonのevalの使い方
頭がいい人のPythonのexitの使い方
状態遷移による文字列パースのテクニック【Python】
形態素解析で代名詞+助詞+名詞を文章から抜き出す【Python, 自然言語処理, Janome】
在宅・未経験、Pythonで稼ぐ方法は?【取引・宣伝・広告】
Pythonのバージョンの確認方法
Pythonのバージョンを確認したい場合は--version
オプションを使います。
$ python --version
Python 3.9.1
↑の場合、環境には3.9.1
のバージョンのPythonがインストールされています。
今回はこのPythonのバージョンを3.10.0
に切り替えてみたいと思います。
pyenvのバージョンの確認方法
環境にインストールされているpyenvのバージョンの確認方法です。
$ pyenv --version
pyenv 1.2.26-11-g6759b7c
pyenvでインストール可能なPythonを調べる
↓のコマンドを使うとpyenvでインストール可能なPythonのバージョンがリストアップされます。
$ pyenv install --list
...
3.9.2
3.9.3
3.9.4
3.10.0a6
3.10-dev
...
リストでは沢山のPythonが一覧されていますが、↑の部分は一部を抜き出しました。
3.10.0a6
というバージョンがインストール可能なのでこれをインストールしてみます。
pyenvで特定バージョンのPythonをインストールする
「pyenv install バージョン
」で特定バージョンのPythonをインストールできます。
3.10.0a6
をインストールします。
$ pyenv install 3.10.0a6
Downloading Python-3.10.0a6.tar.xz...
-> https://www.python.org/ftp/python/3.10.0/Python-3.10.0a6.tar.xz
Installing Python-3.10.0a6...
Installed Python-3.10.0a6 to /home/user/.pyenv/versions/3.10.0a6
インストールを見ると「https://www.python.org/ftp/python/3.10.0/Python-3.10.0a6.tar.xz
」というファイルがダウンロードされ、そのファイルを使ってPythonをインストールしているのがわかります。
インストール済みのバージョンを確認する
「pyenv versions
」で現在pyenvでインストールしているPythonのバージョンが一覧されます。
$ pyenv versions
system
3.10.0a6
3.8.1
* 3.9.1 (set by /home/user/.pyenv/version)
↑の場合、環境には3つのバージョンが入っていて、現在は3.9.1
を使っているのがわかります。
現在pyenvで使っているPythonの確認方法
さきほどのpython versions
でも現在使っているバージョンはわかりますが、↓のコマンドでも現在使っているグローバルなPythonがわかります。
$ pyenv global
3.9.1
現在使っているPythonを特定バージョンに切り替える
「pyenv global バージョン
」で現在使っているPythonのバージョンを切り替えることができます。
$ pyenv global 3.10.0a6
$ pyenv global
3.10.0a6
$ python --version
Python 3.10.0a6
↑ではバージョン3.10.0a6
にグローバルなPythonのバージョンを切り替えています。
そうすると環境のpython
のバージョンも変わります。
localとglobalの違い
環境のグローバルなPythonはpyenv global
で切り替えることができました。
ほかにはpyenv local
というコマンドもあります。
このコマンドは現在のディレクトリにおけるPythonのバージョンを固定するものです。
/tmp$ mkdir testlocal
/tmp$ cd testlocal/
/tmp/testlocal$ pyenv local 3.8.1
/tmp/testlocal$ python --version
Python 3.8.1
/tmp/testlocal$ cd ..
/tmp$ python --version
Python 3.10.0a6
↑の実行例ではtestlocal
というディレクトリを作っています。
そしてtestlocal
内でpyenv local
を実行してPythonのバージョンを3.8.1
にしています。
testlocal
内ではPythonのバージョンは3.8.1
に固定されますが、testlocal
の外ではグローバルなPythonが使われているのがわかります。
現在使っているPythonのどのディレクトリにあるのか?
pyenvで管理しているPythonはどこのディレクトリに保存されているのでしょうか?
これはwhich
コマンドで確認できます。
$ which python
/home/user/.pyenv/shims/python
↑のようにグローバルなPythonはユーザーディレクトリの.pyenv
ディレクトリ以下に配置されています。
shims
ディレクトリ以下を見て見ると
$ ls /home/user/.pyenv/shims/
2to3 idle __pycache__ python3.8
2to3-3.10 idle3 pydoc python3.8-config
2to3-3.8 idle3.10 pydoc3 python3.8-gdb.py
2to3-3.9 idle3.8 pydoc3.10 python3.9
chardetect idle3.9 pydoc3.8 python3.9-config
distro jsonschema pydoc3.9 python3.9-gdb.py
docker-compose pip python python3-config
dotenv pip3 python3 python-config
easy_install pip3.10 python3.10 wsdump.py
easy_install-3.8 pip3.8 python3.10-config
easy_install-3.9 pip3.9 python3.10-gdb.py
↑のようにバージョンごとのファイルがあります。
これらはバイナリに見えますがシェルスクリプトです。
$ file /home/user/.pyenv/shims/python3.10
/home/user/.pyenv/shims/python3.10: Bourne-Again shell script, ASCII text executable
このようにpyenvは環境にスクリプトへのパスを通し、そのスクリプトを通してバイナリを実行しています。
スクリプトの中身が見たい人は↓のコマンドで見れます。
$ less `which python`
おわりに
今回はPythonのバージョンを切り替える方法についてpyenvを使って解説しました。
Pythonの使用期間が長くなれば複数のバージョンが必要になってくるものですが、pyenvがあれば簡単に対応できますね。
🦝 < Pythonのバージョンを切り替えよう
🐭 < こんにちは新しいPython