pyenvを使ってPythonのバージョン管理をする

2023-03-02 hit count image

同じマシンで色んなPythonのバージョンを使うためpyenvを使う方法について説明します。

概要

色んなPythonプロジェクトを1つのマシン(PC)で開発したら、各プロジェクトで使うPythonのバージョンによって開発環境を構築する必要がある場合あります。

この時、毎回Pythonを消して該当プロジェクトに必要なPythonバージョンをインストールすることはでありえないです。今回のブログポストではpyenvを使って1つのマシンで色んなPythonバージョンをインストールして管理する方法について調べてみます。

pyenvのインストール

次のコマンドを実行してpyenvをインストールします。

  • macOS: brew install pyenv
  • Windwos: choco install pyenv-win

macOSの場合、.zshrcファイルを開いて下記の内容を追加します。

# code ~/.zshrc
...
# pyenv setting
eval "$(pyenv init --path)"
eval "$(pyenv init -)"

pyenv-virtualenvのインストール

pyenv-virtualenvpyenvのプラグインでPythonの仮想環境を作れるように助けてくれるプラグインです。

そしたら、次のコマンドを実行してpyenv-virtualenvをインストールします。

  • macOS: brew install pyenv-virtualenv
  • Windows: pip install pyenv-virtualenv

macOSの場合、.zshrcファイルを開いて下記の内容を追加します。

# code ~/.zshrc
...
# pyenv-virtualenv setting
eval "$(pyenv virtualenv-init -)"

Pythonバージョンリスト

次のコマンドを実行してpyenvでインストールできるPythonバージョンを確認します。 다음 명령어를 실행하여 pyenv로 설치 가능한 Python 버전을 확인합니다.

pyenv install --list

そしたら下記のようにインストール可能なPythonのバージョンリストを確認することができます。

...
stackless-3.2.5
stackless-3.3.5
stackless-3.3.7
stackless-3.4-dev
stackless-3.4.2
stackless-3.4.7
stackless-3.5.4
stackless-3.7.5

Python 3.9.9のインストール

今回のブログポストではPython 3.9.9バージョンをインストールしてみます。次のコマンドを実行してPython 3.9.9バージョンをインストールします。

pyenv install 3.9.9

pyenv versions

インストールが終わったら、次のコマンドを実行してインストールされたPythonバージョンを確認します。

pyenv versions

そしたら次のように先ほどインストールしたPython 3.9.9が確認できます。

* system (set by /.pyenv/version)
  3.9.9

pyenv version

次のコマンドを実行して現在使ってるPythonバージョンを確認することができます。

pyenv version

そしたら次のように現在使っているバージョンが確認できます。

system (set by /Users/dev-yakuza/.pyenv/version)

インストールしたPythonバージョンを使う方法

次はpyenvでインストールしたPythonバージョンを使う方法についてみてみます。次のコマンドを実行するとPython 3.9.9をグローバル的に使うことができます。

pyenv global 3.9.9

次のコマンドを実行すると現在のプロジェクトのみ適用できます。

pyenv local 3.9.9

このコマンドは.python-versionファイルを生成して開発環境でpyenvがアクティブされた場合、自動で当該バージョンを使えるように変更してくれます。

次のコマンドを実行すると現在のshellだけ当該バージョンを使えるようになります。

pyenv shell 3.9.9

Pythonの仮想環境を生成する

色んなプロジェクトが同じPythonバージョンを使うだが、インストールライブラリのバージョンが違う場合もあります。この場合、意図したバージョンのライブラリが使われなくなって問題が発生する可能性もあります。

この時、同じバージョンのPythonを使う使う各プロジェクト用の仮想環境を作って、その仮想環境の中で開発をするとこの問題を解決することができます。

それじゃpyenv-virtualenvを使って仮想環境を作ってみましょう。次のコマンドを実行してPythonの仮想環境を生成します。

# pyenv virtualenv VERSION NAME
pyenv virtualenv 3.9.9 venv

生成が終わったら、次のコマンドを使ってPythonの仮想環境がうまく生成されたか確認します。

pyenv versions

そしたら、次のように仮想環境がうまく生成されたことが確認できます。

* system (set by /.pyenv/version)
  3.9.9
  3.9.9/envs/venv
  venv

次は下記のコマンドを実行してpyenv-virtualenvで生成した仮想環境をアクティブにします。

pyenv activate venv

その後、再び下記のコマンドを実行して仮想環境がアクティブされたか確認します。

pyenv versions

問題なければ、次のように仮想環境がうまくアクティブされたことが確認できます。

  system
  3.9.9
  3.9.9/envs/venv
* venv (set by PYENV_VERSION environment variable)

仮想環境の上で全ての作業が終わったら、次のコマンドを実行して仮想環境を非アクティブさせることできます。

pyenv deactivate

再び下記のコマンドを実行して仮想環境がうまく非アクティブされたか確認してみます。

pyenv versions

そしたら、次のように仮想環境が非アクティブされたことが確認できます。

* system (set by /.pyenv/version)
  3.9.9
  3.9.9/envs/venv
  venv

.python-versionファイル

上でpyenv localコマンドを実行すると自動で.python-versionファイルが生成されることを確認しました。このファイルはpyenvを使う開発環境なら自動でPythonのバージョンを変更してくれます。もし、該当するPythonのバージョンがない場合、次のコマンドを実行して.python-versionに作成されたPythonのバージョンをインストールすることができます。

pyenv install

なので、この.python-versionファイルを使って当該プロジェクトを実行するためのPythonのバージョンを共有することができます。もし、現在のプロジェクトの.python-versionファイルがない場合、.python-versionファイルを作って次のように当該プロジェクトで必要なPythonのバージョンを作成します。

3.9.9

Pythonのバージョンを削除する

マシンでもう使わないPythonのバージョンやPythonの仮想環境がある場合、次のコマンドを使ってそのバージョン(仮想環境)を削除することができます。 머신에서 더이상 사용하지 않는 Python 버전이나 Python 가상 환경이 있는 경우, 다음 명령어를 사용하여 해당 버전(가상 환경)을 제거할 수 잇습니다.

pyenv uninstall 3.9.9
# pyenv uninstall venv

完了

これでpyenvを使って同じマシンで色んなPythonのバージョンを使う方法についてみてみました。また、pyenv-virtualenvプラグインを使ってPythonの仮想環境を作る方法についてもみてみました。もし、皆さんも色んなPythonのバージョンの開発環境が必要な場合pyenvを使ってバージョン管理してみてください。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

アプリ広報

今見てるブログを作成たDekuが開発したアプリを使ってみてください。
Dekuが開発したアプリはFlutterで開発されています。

興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。

Posts