プログラミング

【pyenv+pip+venv】Pythonのバージョンを指定した仮想環境構築

プログラミング

概要

Windows 11で pyenv-win、pip、venv を用いて、Pythonのバージョンを指定した仮想環境を構築する手順を、実際のコマンドと共にまとめました。
本記事は、全4話のシリーズの1つ目です。(以降ではpyenv-winのことを「pyenv」と記載します)

目標は、指定したバージョンのPythonとライブラリ(numpy、pandas)が動く仮想環境を構築することです。複雑な設定は行いません。
異なるバージョンで動かした結果を比較したり、複数人の開発で環境を揃える必要があるときに役立ちます。

初回のみ必要な準備を済ませてから、以下の①~⑥の流れで検証します。

 ① 仮想環境作成
 ② ライブラリインストール
 ③ サンプルプログラム実行
 ④ 構成ファイル出力
 ⑤ 仮想環境削除
 ⑥ 構成ファイルから仮想環境再作成

pyenv+pip+venv を用いる方法の特徴として、以下が挙げられます。
用途や制約に応じて、適宜使い分けましょう。

 長所:仮想環境作成の部分は標準ライブラリ(pip、venv)で実行可能
 短所:依存管理が弱い

動作確認環境

  • Windows 11
  • Anaconda不使用
  • PowerShellでコマンド実行
  • 使用したバージョンは以下の通り
ライブラリPC本体にインストール
したバージョン
仮想環境にインストール
するバージョン
Python3.12.63.13.13 (指定)
pip24.226.0.1 (自動)
numpy2.2.6 (不使用)2.4.4 (指定)
pandas2.2.3 (不使用)3.0.2 (指定)
pyenv-win3.1.1(不要)

検証のため、PC本体に既にインストールされている物とは異なるバージョンを指定しました。
pandasはインストールすると、間接的に依存するライブラリ(numpy、python-dateutil、six、tzdata)も自動的にインストールされます。

  • C:\PythonTest をカレントフォルダに設定
  • カレントフォルダに以下のサンプルプログラム(version_test.py)を格納

現在有効になっているPythonとライブラリのバージョンを表示するプログラムを、検証に用いました。

version_test.py
import sys
import pip
import numpy as np
import pandas as pd
import dateutil
import six
import tzdata

libraries = [
    (pip, "pip"),
    (np, "numpy"),
    (pd, "pandas"),
    (dateutil, "python-dateutil"),
    (six, "six"),
    (tzdata, "tzdata")
]

print(f"\nPython version: {sys.version}")
print("\nLibrary version:")
for lib, name in libraries:
    version = getattr(lib, "__version__", "N/A")
    print(f"{name:15} : {version}")
Expand

pyenv準備

初回のみ必要な準備です。

本体にpyenvをインストール

pyenvをインストール
1分ほど待つと、カレントフォルダに install-pyenv-win.ps1 ができます。インストールが済んだら削除して構いません。
ユーザーフォルダ(C:\Users\[username])には「.pyenv」フォルダが作成されます。

PowerShell
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"

PowerShell再起動

インストールされたことを確認

PowerShell
pyenv --version

(参考)pyenvをアンインストールする手順

.pyenvフォルダを削除

PowerShell
Remove-item C:\Users\[username]\.pyenv

環境変数を削除

タスクバーの検索窓から「環境変数を編集」を開き、ユーザー環境変数の「Path」の中身でpyenvを含む項目と、「PYENV」「PYENV_HOME」「PYENV_ROOT」を削除します。

pyenvにPythonをインストール

インストール可能なPythonバージョンを表示

PowerShell
pyenv install --list

指定したバージョンのPythonをインストール
C:\Users\[username]\.pyenv\pyenv-win\versions にバージョン名のフォルダが作成されます。
今回は Python 3.13.13 と 3.14.5 をインストールしました。

PowerShell
pyenv install 3.13.13

(参考)指定したバージョンのPythonをアンインストール

PowerShell (myvenv1)
pyenv uninstall 3.13.13

pyenvのPythonバージョンを設定

pyenvのグローバルバージョンを設定
PC全体でデフォルトとして使用するバージョンを設定します。
今回は動作確認のため、仮想環境で指定するバージョンとは異なる Python 3.14.5 を敢えて設定しました。

PowerShell
pyenv global 3.14.5
pyenv global     # 設定確認

(参考)フォルダ単位でpyenvのローカルバージョンを設定
PowerShell再起動後も、そのフォルダ(子フォルダ含む)に移動すると自動的にローカルバージョンが適用されるようにできます。
フォルダ内には「.python-version」ファイルが生成されます。

PowerShell
pyenv local 3.14.5
pyenv local     # 設定確認

ローカルバージョンを設定解除するには、次のコマンドを入力します。
「.python-version」ファイルも削除されます。

PowerShell
pyenv local --unset

インストール済みバージョンを表示
複数のバージョンが存在するとき、現在有効になっているバージョンに*マークが付きます。

PowerShell
pyenv versions

仮想環境構築

仮想環境を構築するプロジェクト毎に実施します。

仮想環境作成

仮想環境で使用するPythonバージョンに切り替え
指定のPythonバージョンがpyenvにインストール済みであることが前提です。
pyenv shell は、PowerShellを閉じるまで、そのバージョンが有効になります。使用するバージョンが既にpyenvのグローバル or ローカルバージョンになっていれば、切り替える操作は不要です。

PowerShell
pyenv shell 3.13.13

仮想環境を新規作成
カレントフォルダに「myvenv1」フォルダが作成されます。名前(myvenv1)は任意です。

PowerShell
python -m venv myvenv1

仮想環境を有効化
コマンドの先頭が (myvenv1) に変わります。

PowerShell (myvenv1)
.\myvenv1\Scripts\activate

仮想環境のPythonバージョンを確認

PowerShell (myvenv1)
python -V

仮想環境のライブラリ一覧を確認
この時点では、pipだけが入った状態です。

PowerShell (myvenv1)
pip list

ライブラリインストール

指定したバージョンのライブラリをインストール
C:\PythonTest\myvenv1\Lib\site-packages にライブラリ名のフォルダが増えます。
間接的に依存するライブラリも自動でインストールされます。

PowerShell (myvenv1)
pip install numpy==2.4.4
pip install pandas==3.0.2

ライブラリ一覧を確認

PowerShell (myvenv1)
pip list

(参考)ライブラリをアンインストール
ただし、関連ライブラリは自動で削除されません。

PowerShell (myvenv1)
pip uninstall pandas

サンプルプログラム実行

カレントフォルダのサンプルプログラム(version_test.py)を実行

PowerShell (myvenv1)
python version_test.py

構成ファイル出力

構成ファイル(requirements.txt)を作成
カレントフォルダに requirements.txt が作成されます。

PowerShell (myvenv1)
pip freeze > requirements.txt

requirements.txt:

仮想環境削除

仮想環境を終了
コマンドの先頭がカレントフォルダの表示に戻ります。

PowerShell (myvenv1)
deactivate

仮想環境を削除
カレントフォルダのmyvenv1が跡形なく削除されます。

PowerShell
Remove-Item myvenv1 -Recurse -Force

構成ファイルから仮想環境再作成

仮想環境再作成するフォルダには requirements.txt を配置しておきます。

カレントフォルダ移動

PowerShell
cd C:\PythonTest

再作成する仮想環境のPythonバージョンに切り替え
作成時に使用したPythonバージョンに、手動で切り替える必要があります。

PowerShell
pyenv shell 3.13.13

空の仮想環境を新規作成
カレントフォルダに「myvenv2」フォルダが作成されます。名前(myvenv2)は任意です。

PowerShell
python -m venv myvenv2

仮想環境を有効化
コマンドの先頭が (myvenv2) に変わります。

PowerShell
.\myvenv2\Scripts\activate

構成ファイルに記載のライブラリをインストール

PowerShell (myvenv2)
pip install -r requirements.txt

カレントフォルダのサンプルプログラム(version_test.py)を実行

PowerShell (myvenv2)
python version_test.py

参考文献

タイトルとURLをコピーしました