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 のユーザー環境変数に追加しておきましょう。
- スタートメニューで「環境変数」または「env」と検索
- 「システム環境変数を編集」をクリック
- 「環境変数(N)...」をクリック
- 上段の「ユーザー環境変数」セクションに 新しい変数を追加。変数名は、
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 系を利用されている場合はまだ半年ありますが、お早めに。