venvで気軽にPythonの仮想環境を構築する

コラム/ラボノート公開更新広告

venvでPythonの仮想環境を作り、使えるようにする手順を解説します。

この記事の内容
  1. 仮想環境を作る
  2. 仮想環境を使えるようにする
  3. 作った仮想環境を使ってみる
  4. 参考資料
  5. 関連記事

仮想環境を作る

まず仮想環境を作ります。

環境といっても、プロジェクトファイルを作成するだけですので難しく考えなくても大丈夫です。

ディレクトリの作成と移動

「コマンドプロンプト」や「Visual Studio Codeのターミナル」で仮想環境用のプロジェクトファイルを作成します。

実行するためには、まず作成したい位置まで移動しなければなりません。

例えば以下のようにcd(カレントディレクトリを変える)コマンドを使います。

cd C:\Users\ユーザー名\Documents

今回はドキュメントに作成することとします。

環境ファイルの作成

ファイルを作成したい位置まで移動出来たら仮想環境を作成します。

python3 -m venv env

うまく実行できない場合は以下のコマンドを試してみてください。

python -m venv env

環境構築できると「env」フォルダが作成されています。

今回の例だと「C:\Users\ユーザー名\Documents\env」の位置に出来ています。

Documents の中に env フォルダーができる。env には有効化のコマンドが入る Scripts、pip install したライブラリが入る Lib\site-packages、本体の Python の場所を記録した pyvenv.cfg がある。
ライブラリが入るのは env の中の Lib\site-packages

仮想環境を使えるようにする

環境ファイルが作成できましたが、この時点ではまだ使うことができません。

有効化する指示を出すことで初めて使用できます。

仮想環境の有効化

Visual Studio Codeのターミナル(PowerShell)で実行する場合は以下のコマンドで有効化します。

もしPowerShellの権限の関係でうまくいかない場合は次項を見て対処してください。

env\Scripts\Activate.ps1

コマンドプロンプトで実行する場合は以下のコマンドです。

env\Scripts\activate.bat

仮想環境が有効化されると現在のフォルダ位置の一番左に(env)と表示されるようになります。

(env) PS C:\Users\ユーザー名\Documents>

このenvという文字は仮想環境を作成するときに入力したpython3 -m venv envのenv部分に何を入力するかによって変わります。

PowerShellの権限の関係でうまくいかない場合

Visual Studio Codeのターミナル(PowerShell)で仮想環境を有効化するとき、以下のエラーが出る時があります。

env\Scripts\Activate.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\ユーザー名\Documents\env\Scripts\Activate.ps1 を読み込むことができません。詳細については、「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID=135170(別サイト)) を参照してください。

これはセキュリティの関係からPowerShellスクリプトが実行できないようになっているためです。

この制限を解除する必要があります。

まず、現在の制限の状況を確認します。

PowerShell Get-ExecutionPolicy

実行できない時、多くの場合”Restricted”と表示されます。

これは常に全てのPowerShellスクリプトを制限するものです。

今開いているターミナルだけで一時的に有効化する場合には、以下のコマンドでRestrictedからRemoteSignedに制限を緩和した新しいPowerShellを、そのターミナルの中で起動します。

PowerShell -ExecutionPolicy RemoteSigned

一時的に有効化できたかどうかは以下のコマンドで確認します。

PowerShell Get-ExecutionPolicy -list

Process(今開いているPowerShell)の部分がRemoteSignedになっていたら大丈夫です。

またCurrentUser(現在のユーザー)やLocalMachine(PCすべてのユーザー)の方はRestrictedもしくはUndefinedのままのはずです。

もし一時的な許可ではなく、常に許可しておきたい場合、コマンドプロンプトを開くときに「管理者として実行」で開くと以下のコマンドが使用できます。

セキュリティを低下させるため十分理解したうえで実行してください。

PowerShell Set-ExecutionPolicy RemoteSigned

仮想環境の終了

仮想環境を終えるためには以下のコマンドを入力します。

deactivate

仮想環境の削除

作成した仮想環境が不要になった場合はフォルダごと削除します。

作った仮想環境を使ってみる

例えば仮想環境でインストールしたライブラリは、元のPython環境や他の仮想環境からはアクセスできません。

この独立性が仮想環境の主な利点の一つです。

裏を返すと、仮想環境を作った段階ではPythonをインストールしただけでライブラリなどの準備が出来ていないということです。

ライブラリのインストール

ライブラリは通常のインストール方法が利用可能です。

例えばNumPyは以下のようにインストールします。

pip install numpy

またGitHubなどでプログラムを他者に共有する場合、インストールすべきライブラリとそのバージョンは「requirements.txt」に記載して保存するのが一般的です。

pipコマンドを使ってファイルを指定することで一括でインストールすることができます。

pip install -r requirements.txt

例えば「requirements.txt」には以下のようなライブラリ名とバージョンが記載されています。

numpy==1.15.4
pandas==0.21.1
matplotlib==2.1.0
Pillow==5.4.1
scikit-learn==0.20.2
Keras==2.2.4
tensorflow==1.7.1

仮想環境を作った直後で何もないところからライブラリをインストールする場合に活用してみてください。

仮想環境のコピー

作成した仮想環境を別の場所で使いたい場合でも、フォルダごとコピーや移動はしません。

仮想環境の中には作った場所のパスが書き込まれているため、コピーや移動をすると正しく動かないことがあります。

別の場所や他者のPCで使うときは、その場所で仮想環境の作り直しが必要です。

作り直すときは、ライブラリの情報を「requirements.txt」で出力して共有します。

pip freeze > requirements.txt

仮想環境を移行したい場所やPCで仮想環境を作り、pipコマンドでライブラリを一括インストールします。

元の env からは pip freeze で requirements.txt を出力する。移したい場所では新しい env を作り、requirements.txt を使って pip install -r で同じライブラリを入れる。env のフォルダーごとのコピーはしない。
渡すのは requirements.txt だけ。移す先で env を作って一括インストール

結局何が凄いのか?

ライブラリはバージョンによって動作が異なる場合があり、これはバグの原因にもなり得ます。

通常は1種類のバージョンしかインストールできません。

一方で仮想環境を使い分離すると複数のバージョンの同一ライブラリを利用できます。

本体の Python と、env A、env B がそれぞれ自分のライブラリの置き場所を持つ。env A と B には numpy の旧バージョンと新バージョンが別々に入る。実行する Python は本体のもの。
env ごとにライブラリの置き場所が別。同じライブラリの別バージョンも共存できる

更に「requirements.txt」を共有すれば、他者のPCでも同じライブラリの環境を簡単に再現できます。

特にvenvはPythonの標準機能であり、利用しやすいのが特徴です。

参考資料

仮想環境(別サイト)www.python.jp

Python環境構築ガイド(別サイト)www.python.jp

PowerShell のスクリプトが実行できない場合の対処方法(別サイト)qiita.com

関連記事

YOLOv8を使って簡単に画像認識する

Excelを使ったダミー変数の作り方

Pythonプログラムをダブルクリックで使う