【python】python仮想環境の作成方法

Pythonで開発をしていると、「このプロジェクトでは特定のライブラリのバージョンを固定したい…」とか「環境がゴチャゴチャになって動かなくなった…」なんてこと、ありませんか? そんなときに便利なのが 仮想環境 です。 今回は、Pythonの仮想環境をサクッと作る方法を紹介します。
結論
Pythonの仮想環境を作成するには、venv を使用するのが一般的です。以下のコマンドを実行すれば、簡単に仮想環境を作成できます。
python -m venv 環境名
仮想環境を有効化すれば、他の環境に影響を与えずにPythonパッケージを管理できます。
解説
仮想環境とは?
仮想環境とは、Pythonのパッケージ管理をプロジェクトごとに分離する仕組みです。例えば、あるプロジェクトでPython 3.8を使い、別のプロジェクトではPython 3.11を使うことも可能です。プロジェクトごとに環境を分離すると、こんなメリットがあります。
- プロジェクトごとに環境を分けられる
例えば、あるプロジェクトでは Django 3.2、別のプロジェクトでは Django 4.0 を使う…といったように、同じライブラリやフレームワークの異なるバージョンを使い分けることが可能です。 - グローバル環境を汚さない
システム全体に影響を与えず、プロジェクトごとに必要なパッケージだけをインストールできます。新しく参画するプロジェクトで、とあるライブラリの旧バージョンが必要だとしても問題ありません。 - 環境の再現がしやすい
作成した仮想環境で下記コマンドを実行し、requirements.txt を作成すれば、同じ環境を簡単に再現できます。
pip freeze > requirements.txt
pip install -r requirements.txt
仮想環境の作成手順
ターミナルまたはコマンドプロンプトで、以下のコマンドを実行します。
python -m venv python_dev
これで python_dev という仮想環境が作成されます。見てみると、いくつかのディレクトリやファイルが作成されているのがわかります。下記は『new_python』というディレクトリでコマンドを実行した場合の例です。

仮想環境の有効化
実際に開発をすすめるには、仮想環境を有効化する必要があります。有効化は下記のコマンドで可能です。開発するOSやコマンドを実行する環境によって異なります。
- Windows(コマンドプロンプト)
python_dev\Scripts\activate
- Windows(PowerShell)
python_dev\Scripts\Activate.ps1
- Mac/Linux
source python_dev/bin/activate
いずれの場合も、作成した仮想環境ディレクトリ(この場合は「python_dev」)が存在するディレクトリで実行してください。正常に有効化できれば、コマンドラインの先頭に有効化された仮想環境名が表示されます。(赤枠部分)

ライブラリをインストールする場合は、この状態でpip installコマンドを実行してください。
仮想環境の無効化
仮想環境を終了するには、以下を実行します。
deactivate

まとめ
Pythonの仮想環境を作成すると、プロジェクトごとに環境を管理でき、依存関係の競合を防げます。

コマンドはシンプルなので、積極的に活用しましょう!