Python pyenv pyenv-win バージョン管理

今回は、Pythonのバージョン管理を行えるpyenvについてのメモです。

Node.jsのnodenv・nvmや、Rubyのrbenv等と同じような使い方ができます。

https://github.com/pyenv/pyenv

環境

  • Windows:Win11 24H2 OSビルド:26100.4061
  • Mac:Sequoia 15.5
  • pyenv:2.6.11
  • pyenv-win:3.1.1

インストール

・Windows

厳密には、pyenvはWindowsには対応していません。
しかし、pyenv-winというWindows版が存在します。
pyenv-winには一部機能は含まれていない・一部仕様が異なるなど注意点もございますが、
こちらで記載するようなPythonバージョンを複数管理することは問題なくできます。

 

公式README通りに行う場合、PowerSellを管理者権限で行います。

PowerSell初回実行時など、PowerSellポリシーが実行を許可していない場合、許可をします。

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine

※ポリシーを戻す(厳しいポリシーに変更)場合は、以下などで可能です。

Set-ExecutionPolicy Restricted -Scope LocalMachine

インストールは、以下の要領で行います。

Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./install-pyenv-win.ps1"

※実行すると、実行した場所にinstall-pyenv-win.ps1がコピーされて残ります。

・Mac

brew install pyenv

※事前にビルド依存ライブラリ(openssl, zlib 等)が必要な場合があります。その場合エラー内容に応じてインストールして下さい。


pyenv 環境変数設定

・Windows

おそらく自動的に追加されます。
そのため、PowerSellやコマンドプロンプトを新しく開きなおすと使用できます。

pyenv-win env setting

もしも、環境変数が追加されていなかった場合、追加が必要です。

以下のようなパスでpyenv-winがインストールされていると思われます。

C:\Users\<PCユーザー名>\.pyenv\pyenv-win

pyenv install dir

PowerSellの場合、以下の要領でインストール場所を確認できます。

$env:USERPROFILE + "\.pyenv\pyenv-win"

check pyenv install dir

こちらを環境変数に追加してください。

・Mac

~/.zshrc(~/.zprofile)、~/.bashrc等、使用しているシェルに合わせて設定します。

set pyenv env for mac

eval "$(pyenv init -)"

以下は設定例です。

set pyenv env for mac

source ~/.zshrc(~/.zprofile)source ~/.bashrc などで環境変数を反映させます。

 

どちらも環境変数まで問題なければ、pyenvの動作確認も兼ねてバージョン確認を行います。

pyenv --version

pyenv --version


インストール済みPythonバージョン確認

現在インストール自体はされていて、使用することができるPythonバージョンを確認できます。
表示されていないバージョンは、インストールを行ってからでないと使用できません。

pyenv versions

pyenv versions


インストール可能Pythonバージョン確認

インストールが可能なバージョンを確認できます。
こちらで表示された番号をインストール時に指定します。

pyenv install --list

pyenv install --list


利用可能Pythonバージョンインストール

--listで表示されていたバージョンを指定できます。

pyenv install [バージョン番号]

pyenv install [number]

インストールするとversionsで表示されるようになります。

pyenv install after python versions


利用バージョン指定(local)

特定のプロジェクトやフォルダ配下のみで限定的にPythonのバージョンを固定したい場合、以下の要領で行います。
※以下のコマンドを実行する前に、固定したいプロジェクト・フォルダの場所に移動しておきます。

pyenv local [バージョン番号]

pyenv local

設定すると、.python-versionというファイルが生成され、
固定しているバージョン番号が記載されます。


利用バージョン指定(global)

特定のプロジェクト・フォルダではなく、
使用しているユーザー全体で認識される統一バージョンの設定です。

以下のようにlocalの場合と同じ要領で設定できます。

pyenv global [バージョン番号]

pyenv global


利用バージョン指定(shell)

あまり利用機会はないかもしれませんが、
現在のシェルセッションでのみバージョンを指定したい場合、
以下の要領で設定することができます。

pyenv shell [バージョン番号]

優先順位は、Shell > Local > Globalの順番となります。


Pythonバージョンが正しく切り替わらない

元々Pythonをインストールしていた場合に、正常に切り替わらないトラブルが起きることがあります。
その際に確認すべき点を挙げさせて頂きます。

1、動作しているPython実態の確認

・Mac

which python3

・Windows(cmd)

where python3

・Windows(PowerShell)

Get-Command python3

正常にPythonバージョンが切り替わらない場合、
そもそもどのPythonが動作しているか確認します。

2、環境変数の設定確認

動作させたいPythonの実態path以外は含まれないようにし、
できれば動作させたいPython以外はアンインストールすることをおすすめします。

3、特定のツールのみ動作しない場合の確認

稀に、コマンドプロンプト(Windows)やターミナル(Mac)では問題なく動作するが、
VSCodeの統合ターミナルなどでは正しく動作しないなども起きえます。

その場合、IDEごとの設定を確認します。
VSCodeでしたら、"terminal.integrated.shellArgs.osx"-l を付ける、
または "python.defaultInterpreterPath" に pyenv のパスを直接指定するなど調整が必要な場合もあります。
(環境変数設定後に、IDEを再起動すれば問題なく動作することもあります)


今回のメモは以上です。

他のプログラミング言語のバージョン管理ツールと同じ要領で使用できます。
Mac、Windowsともに同じ要領で管理できます。

都内でエンジニアをやっています。 2017年に脱サラ(法人設立)しました。 仕事で調べたことや、気になったことをメモしています。
投稿を作成しました 183

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る