virtualenvの使い方【Python】venvとの違いや仮想環境の作り方

複数のPythonプロジェクトを同時に進める中で、ライブラリのバージョンが衝突し、環境が壊れてしまうといった悩みを抱えている方もいるかもしれません。
この記事を読めば、Pythonの仮想環境ツールであるvirtualenvの正しい使い方を習得し、自分の開発プロジェクトに合わせて適切な仮想環境を構築し、必要なパッケージを独立した状態でインストール・管理できる状態になります。
この記事でわかること
・ Python標準のvenvとの違いとvirtualenvが適しているケース
・ 仮想環境の作成から有効化・無効化までの一連の基本操作
・ `requirements.txt`を用いた開発環境の再現・共有方法
virtualenvとは?Python開発で仮想環境が必須とされる理由
virtualenvとは、Pythonプロジェクトごとに独立した実行環境(仮想環境)を作成するためのツールです。
Python開発では、プロジェクトAではライブラリXのバージョン1.0を、プロジェクトBではバージョン2.0を使いたい、といったケースが頻繁に起こります。
PC本体に直接ライブラリをインストールすると、バージョン競合が発生し、どちらかのプロジェクトが動かなくなる可能性があります。
このような「環境の汚染」を防ぎ、プロジェクトごとに依存関係をクリーンに保つために、仮想環境の利用が必須とされています。
では、Pythonに標準で備わっているvenvとは何が違うのでしょうか。
標準ライブラリ「venv」との具体的な違いを比較
virtualenvとvenvの最も大きな違いは、virtualenvが外部ライブラリであるのに対し、venvはPython3.3以降に標準で組み込まれている点です。
そのため、venvは追加のインストールなしですぐに利用できます。
一方、virtualenvはpipコマンドによるインストールが必要ですが、Python2とPython3の両方に対応している、venvよりも仮想環境の作成が高速である、環境作成時にインストールされるpipやsetuptoolsといった基本パッケージのバージョン管理が柔軟である、といったメリットがあります。
プロジェクトに応じてvirtualenvを選ぶべきケースとは
プロジェクトの要件に応じてvirtualenvを選択すべき具体的なケースが存在します。
まず、Python2系の古いバージョンで開発を行う必要がある場合、venvは利用できないためvirtualenvが必須の選択肢となります。
また、多数の仮想環境を頻繁に作成・削除するような開発フローにおいて、少しでも環境構築の速度を重視したい場合にも、venvより高速なvirtualenvに利点があります。
さらに、特定のバージョンのpipやsetuptoolsを組み込んだ環境を正確に再現したい高度な要求がある場合も、拡張性の高いvirtualenvが適しています。
virtualenvのインストールから無効化までの基本手順
ここでは、virtualenvをPCにインストールし、新しい仮想環境を作成、有効化してパッケージを導入し、最後に無効化するまでの一連の基本的な使い方をコマンド例と共に解説します。
この手順をマスターすれば、プロジェクトごとに独立したPython環境を自由に構築・管理できるようになります。
まずは、pipコマンドを使ってvirtualenv自体をインストールしましょう。
ステップ1:pipコマンドでvirtualenvをインストールする
最初に、ターミナルまたはコマンドプロンプトを開き、以下のpipコマンドを実行してvirtualenvをシステム全体にインストールします。
これにより、どのディレクトリからでもvirtualenvコマンドが使用可能になります。
pip install virtualenv
このコマンドは、通常はPCのグローバルなPython環境に対して一度だけ実行します。
インストールが完了したかどうかの確認は、virtualenv –versionコマンドでバージョン情報が表示されれば成功です。
ステップ2:新しい仮想環境を作成するコマンド
次に、プロジェクト用のディレクトリに移動し、新しい仮想環境を作成します。
以下のコマンドで、指定した名前(ここではmyenv)のディレクトリが作成され、その中に独立したPython環境が構築されます。
virtualenv myenv
このコマンドを実行すると、カレントディレクトリにmyenvというフォルダが生成されます。
このフォルダ内に、隔離されたPythonインタープリタやライブラリが格納されることになります。
一般的には、プロジェクトのルートディレクトリでこのコマンドを実行します。
ステップ3:【OS別】作成した仮想環境を有効化(activate)する方法
作成した仮想環境を利用するには、「有効化(activate)」という操作が必要です。
このコマンドはOSによってパスが異なるため注意してください。
有効化すると、コマンドラインの先頭に環境名(myenv)が表示され、これ以降のコマンドが仮想環境内で実行されるようになります。
Windowsの場合(コマンドプロンプトやPowerShell)
myenv\Scripts\activate
macOS/Linuxの場合
sourceコマンドを用いて有効化します。
sourcemyenv/bin/activate
パスの区切り文字がWindowsではバックスラッシュ(\)、macOSやLinuxではスラッシュ(/)である点に注意が必要です。
ステップ4:仮想環境に特定のパッケージをインストールする
仮想環境を有効化した状態で、通常通りpipコマンドを使って必要なパッケージをインストールします。
例えば、requestsライブラリをインストールする場合は以下のように実行します。
pip install requests
この操作でインストールされたrequestsは、現在有効化しているmyenvの中にのみ保存されます。
PC本体のグローバルなPython環境には影響を与えないため、プロジェクト固有の依存関係を安全に管理できます。
ステップ5:仮想環境から抜けるための無効化(deactivate)コマンド
仮想環境での作業が終了したら、以下のコマンドで無効化し、元のグローバル環境に戻ります。
このdeactivateコマンドはOSによる違いはありません。
deactivate
実行すると、コマンドラインの先頭にあった環境名(myenv)の表示が消えます。
これにより、再びシステムのPython環境を参照する状態に戻ったことが確認できます。
別の作業を始める際は、再度対象の環境をactivateする必要があります。
プロジェクトの環境を再現・共有するrequirements.txtの活用法
virtualenvで作成した環境は、requirements.txtというファイルを使うことで、他の開発者と共有したり、別のマシンに同じ環境を再現したりできます。
このファイルには、プロジェクトで使っている外部ライブラリの名前とバージョンの一覧が記録されます。
チーム開発や本番環境へのデプロイにおいて、全員が全く同じ環境で作業を進めるために不可欠な仕組みです。
まずは、現在の環境にインストールされているパッケージをファイルに書き出す方法から見ていきましょう。
現在の環境に導入済みのパッケージ一覧を書き出す
仮想環境を有効化した状態で、以下のpipコマンドを実行すると、インストール済みのパッケージとそのバージョンがrequirements.txtという名前のファイルに出力されます。
pip freeze > requirements.txt
このコマンドは、pip listと似ていますが、他の環境で再現可能な形式で出力する点が特徴です。
実行後、プロジェクトのディレクトリにrequirements.txtファイルが作成され、中身はrequests==2.28.1のような形式で記述されていることが確認できます。
このファイルをGitなどのバージョン管理システムに含めるのが一般的です。
requirements.txtファイルからパッケージを一括インストールする
他の開発者が作成したrequirements.txtや、自身がバックアップしておいたファイルから環境を復元するには、以下のコマンドを実行します。
pip install -r requirements.txt
このコマンドを実行すると、pipはrequirements.txtに記載されているすべてのパッケージを、バージョンも含めて正確に一括でインストールします。
新しいPCで開発を始める際や、チームに新しいメンバーが加わった際に、このコマンド一つで迅速に開発環境を統一することが可能です。
不要になったvirtualenvの仮想環境を安全に削除する方法
不要になったvirtualenvの仮想環境を削除する方法は非常にシンプルで、作成された仮想環境のディレクトリを直接削除するだけです。
特別なアンインストールコマンドは必要ありません。
まず、もし対象の仮想環境を有効化している場合は、deactivateコマンドを実行して無効化します。
その後、macOSやLinuxの場合はrm -rf [環境名]コマンド、Windowsの場合はエクスプローラーから対象のフォルダを選択して削除します。
例えばmyenvという名前の環境であれば、myenvフォルダを完全に削除すれば完了です。
この操作は元に戻せないため、削除対象のディレクトリを間違えないよう十分に注意してください。
【応用】VS Codeでvirtualenvの仮想環境インタープリタを認識させる設定
VisualStudioCode(VSCode)で開発を行う際、作成したvirtualenvの仮想環境を正しく認識させることで、コーディング中の補完機能やデバッグ実行がその環境内で行われるようになります。
設定は簡単で、まずVSCodeにMicrosoft公式のPython拡張機能がインストールされていることを確認してください。
次に、コマンドパレットを開き(Windows/LinuxではCtrl+Shift+P、macOSではCmd+Shift+P)、「Python:SelectInterpreter」と入力して選択します。
すると、PC内に存在するPythonインタープリタの一覧が表示されるので、その中から先ほど作成した仮想環境のパス(例:./myenv/bin/python)を選びます。
これで、VSCodeのターミナルやデバッグ機能が、選択した仮想環境を自動的に使用するようになります。
virtualenvに関するよくある質問
virtualenvはPythonの環境管理で広く使われているツールですが、venvやpyenvといった他のツールとの違いや、具体的な管理方法について疑問を持つ方も少なくありません。
ここでは、virtualenvに関するよくある質問とその回答をまとめました。
virtualenvとvenvの具体的な違いは何ですか?どちらを使うべき?
virtualenvは高機能で高速な外部ライブラリ、venvは手軽なPython標準機能という点が大きな違いです。
virtualenvはPython2/3両対応で、venvより高速に環境を構築できます。
一方、venvは追加インストールが不要ですぐに使えます。
特別な理由がない限り、まずは標準のvenvを試し、Python2系のサポートが必要な場合や、より高速な環境構築が求められる場合にvirtualenvを選ぶのが良いでしょう。
pyenvとvirtualenvの役割の違いと、連携させる方法を教えてください。
pyenvは複数のPythonバージョン(3.8,3.9,3.10など)自体を管理・切り替えるツールです。
対してvirtualenvは、ある一つのPythonバージョン内で、ライブラリの環境をプロジェクトごとに分離するツールです。
両者は役割が異なるため、「pyenvで利用したいPythonバージョンを指定し、その上でvirtualenvを使ってプロジェクト固有の環境を作る」という形で連携させるのが一般的な使い方です。
作成した複数の仮想環境(virtualenvs)を一覧で確認・管理する方法はありますか?
virtualenv自体に作成した環境を一覧表示するコマンドはありません。
しかし、virtualenvwrapperという拡張ツールを導入すれば可能になります。
virtualenvwrapperをインストールすると、lsvirtualenvコマンドで全環境を一覧で確認したり、workon[環境名]という簡単なコマンドで環境を素早く切り替えたりできるようになり、複数の仮想環境の管理が格段に容易になります。
まとめ
本記事では、Pythonの仮想環境構築ツールであるvirtualenvの基本的な使い方から、標準のvenvやpyenvとの違いまでを解説しました。
virtualenvとは、プロジェクトごとに独立したPythonライブラリ環境を作成し、依存関係の衝突を防ぐための重要なツールです。
virtualenvコマンドでの環境作成、activateによる有効化、pipでのパッケージ管理、そしてdeactivateによる無効化という一連の流れを理解することが基本となります。
また、requirements.txtを活用することで、チーム間での環境共有や再現が容易になります。
これらの使い方をマスターし、クリーンで効率的なPython開発環境を構築してください。







