pyenvは複数バージョンのPythonを切り替えながら利用するためのツールで、たとえば Python3.7 と Python3.8 がインストールされていれば、python
コマンドで実行するPythonのバージョンを pyenv global
コマンドで指定できます。
次の例では、pyenv global
コマンドで、Python 3.6.1と3.7.6を切り替えながら実行しています。
~ pyenv global 3.6.1 # pythonコマンドの起動対象を 3.6.1に指定
~ python # pythonコマンドで、3.6.1を実行
Python 3.6.1 (default, Aug 12 2020, 10:31:24)
[GCC 4.2.1 Compatible Apple LLVM 11.0.3 (clang-1103.0.32.62)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
~ pyenv global 3.7.6 # pythonコマンドの起動対象を 3.7.6に指定
~ python # pythonコマンドで、3.7.6を実行
Python 3.7.6 (default, Aug 12 2020, 10:34:05)
[Clang 11.0.3 (clang-1103.0.32.62)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
頻繁に、Pythonのマイナーバージョンまで指定して切り替える必要があるユーザには便利な機能ですが、以下の理由から、プログラミング初心者の方におすすめする理由はないと思っています。
-
pyenvはWindowsをサポートしていないため、Windowsユーザは使いたくても使えません。
-
書籍や、Web上のページなどでは、あまりpyenvの利用を前提とした説明はしていないため、初心者にはわかりにくくなってしまう。
-
pyenvでは、Python
3.7.1
と3.7.2
のようなマイナーバージョンまで、独立した環境として別々に保持されます。一般的な用途ではこのような指定はまず不要で、実行環境としては各メジャーバージョン(3.7
や3.8
など)の最新版だけで十分です。 -
ほとんどのケースでは、Pythonのバージョンの切り替えは、
python3.7
コマンドとpython3.8
コマンドのような、コマンド名の使い分けで十分です。おなじpython
コマンドでPython 3.7と3.8を使い分けるのは、逆に混乱を招きかねません。 -
pyenvはその機能の実現に Shims という仕組みを使っており、アプリケーションやライブラリによっては不具合が発生する場合があります。それほど難しいものではありませんが、問題が発生したときに自分で解決できる程度までOSやシェルの仕組みを理解してから使わないと、ハマってしまうことがあります。
pyenvは便利なツールではありますが、少なくとも最初の学習中にはあまり必要なツールではありません。不必要なツールの導入は避けて、できるだけシンプルな環境を構築するように心がけましょう。