Pythonの仮想環境再作成

Python バージョン 3.9 系のセキュリティサポートが今年の 2025 年 10 月で終了するため、仮想環境を 3.11で再作成することになりました。
仮想環境は特定の Python バージョンに紐づいているため、単純なアップデートではなく、再作成が必要になります。
今回再作成した環境は以下になります。

  • OS: Windows11
  • 仮想環境: venv

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

仮想環境の確認

削除する前に仮想環境の確認を行います。まだ、削除してないため、pipenv --venv を実行後、パスが表示されます。

pipenv --venv

作業前に改めてバージョンを確認しておきましょう。
pipenv shell で仮想環境に入り、python --version で確認します。

$ pipenv shell
$ python --version
Python 3.9.10

既存の仮想環境を削除

以下のコマンドで仮想環境を削除します。削除後、今一度存在確認を行い、削除されていることを確認します。
「No virtualenv has been...」と表示されるのは正常です。

pipenv --rm
pipenv --venv
No virtualenv has been created for this project yet!

Pipfile を退避

安全に中身を再利用したいため、Pipfile を別フォルダに退避かコピーして保管しておいてください。

Pipfile / lock を削除

rm Pipfile Pipfile.lock

環境変数の設定

今回、.venv をプロジェクト直下に作成したいため、インストール前に環境変数を設定しておきます。
既に設定されているかもしれないため、事前に確認します。

コマンドプロンプトによる確認

設定済みであれば 、1が、設定されていない場合は、%PIPENV_VENV_IN_PROJECT%と表示されます。

echo %PIPENV_VENV_IN_PROJECT%

PowerShell による確認

設定済みであれば、1が、何も表示されなければ、未設定です。

$env:PIPENV_VENV_IN_PROJECT

未設定の場合は、Windows のユーザー環境変数に追加しておきましょう。

  1. スタートメニューで「環境変数」または「env」と検索
  2. 「システム環境変数を編集」をクリック
  3. 「環境変数(N)...」をクリック
  4. 上段の「ユーザー環境変数」セクションに 新しい変数を追加。変数名は、PIPENV_VENV_IN_PROJECT 、変数値は1

Python 3.11での仮想環境の作成

pipenv --python 3.11
pipenv --venv

無事に作成されていれば pipenv --venv を実行することで仮想環境のパスが表示されます。

$ pipenv shell
$ python --version
Python 3.11.0

その後、仮想環境に入ってバージョン確認を行い、Python 3.11 系になっていれば OK です。

各パッケージのインストール

想定される退避した Pipfile

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[packages]
django = "==4.2.4"
djangorestframework = "*"
psycopg2-binary = ">=2.9"
requests = "^2.31.0"

[dev-packages]
black = "*"
flake8 = "*"

[requires]
python_version = "3.11"

通常パッケージ([packages])

pipenv install django==4.2.4
pipenv install djangorestframework
pipenv install "psycopg2-binary>=2.9"
pipenv install requests==2.31.0

開発用パッケージ([dev-packages])

pipenv install --dev black
pipenv install --dev flake8

pipenv install によって一括でパッケージをインストールすることも可能です。
ただ、私が行った際は失敗したため、退避した Pipfile にならって上記のように 1 つずつインストールする方法を採りました。

次に仮想環境を作成する機会が訪れた場合、確実に忘れてそうなので記事にしました。3.9 系を利用されている場合はまだ半年ありますが、お早めに。