[Python]仮想環境の作成[venv]

Python

Pythonの標準ライブラリ「venv」を使用して、仮想環境の作成と有効化をやっていきます。

仮想環境を使用すると、現環境を汚さずにちょっとしたパッケージを試すことができたり、特定の環境を模してテストすることができるようになります。

WindowsとLinux両方の環境で実行しますが、Macの方はLinuxの方を参考にしてください。

公式ドキュメント
venv --- 仮想環境の作成

使用した環境
Windows10 PowerShell
WSL2 Ubuntu - 20.04 Bash
Python3.10.0

 Androidアプリを作成しました。
 感情用のメモ帳です。

スポンサーリンク
スポンサーリンク

仮想環境の作成

標準ライブラリvenvは、Pythonのバージョン3.3以上で使用できます。

仮想環境を作成するには以下のコマンドをターミナルで打ちます。

python[3] -m venv ディレクトリのパス

Windowは「python」、Linuxは場合によって3を付けて「python3」とする必要があります。

Windows環境とLinux環境、それぞれで実行してみます。

共通している点として、カレントディレクトリ内に「virtual」というディレクトリを作成し、パスに指定しています。

※ディレクトリ名(Windowsではフォルダ名)は何でも構いません。
このディレクトリ名が仮想環境の目印になります。

Windows(PowerShellを使用)

> python -m venv virtual
> dir .\virtual\
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2022/02/18     18:11                Include
d-----        2022/02/18     18:11                Lib
d-----        2022/02/18     18:11                Scripts
-a----        2022/02/18     18:11            118 pyvenv.cfg

Linux(bashを使用)

$ python3 -m venv virtual/
$ ls virtual/
bin  include  lib  lib64  pyvenv.cfg

virtualディレクトリの中に仮想環境に必要なものが作成されました。

WindowsとLinuxを比較すると、ディレクトリの構成がちょっと違っています。

これで仮想環境の作成はできましたが、まだこれを使えるようになってはいないので、次は有効化してみましょう。

仮想環境の有効化

Windows

PowerShellを使ってやってみます。

仮想環境を作成したフォルダの中に「Scripts」というフォルダがあります。

このなかの「Activate.ps1」を指定して実行します。
これだけで終わりです。

> .\virtual\Scripts\Activate.ps1
(virtual) PS C:\Users\fujino\Documents>

仮想環境が有効化されると(フォルダ名)が頭に付きます。

上記のようにならず、場合によっては次のようなエラーが出るかもしれません。

> .\virtual\Scripts\Activate.ps1
.\virtual\Scripts\Activate.ps1 : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\fujino\Documents\virtual\Scripts\Activate.ps1 を読み込むことができません。
詳細については
「about_Execution_Policies」(https://go.microsoft.com/fwlink/?LinkID= 
135170) を参照してください。
発生場所 行:1 文字:1
+ .\virtual\Scripts\Activate.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

このエラーが出るのは、デフォルトの設定では、スクリプトの実行ができないようになっているからです。

もし実行できなかった場合、設定を変更してスクリプトを実行できるようにします。

まず一度閉じて、管理者としてPowerShellを起動してください。

そして「Set-ExecutionPolicy -ExecutionPolicy RemoteSigned」を実行してください。
セキュリティポリシーを「RemoteSigned」に変更します。

「RemoteSigned」ついては次のリンク内を参照。

実行ポリシーについて[docs.microsoft]

では管理者としてPowerShellを起動し、コマンドを打ちます。

>  Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): y

「y」を入力して変更します。

改めて「Scripts\Activate.ps1」を実行してください。

> .\virtual\Scripts\Activate.ps1
(virtual) PS C:\Users\fujino\Documents>

では、念のため仮想環境内にいるか確認してみます。
pipでインストールされているパッケージリストを表示。

(virtual) PS C:\Users\fujino\Documents\> pip list
Package    Version
---------- -------
pip        21.2.3
setuptools 57.4.0

ちなみに有効化前は次のような表示でした。

PS C:\Users\fujino\Documents\> pip list
Package     Version
----------- -------
pip         22.0.3
playsound   1.3.0
pygame      2.1.0
PySimpleGUI 4.56.0
setuptools  57.4.0

仮想環境が無事有効化されています。

もしPowerShellではなくて、コマンドプロンプトを使う場合、Scriptsの中の「activate.bat」を実行します。

C:\Users\fujino\Documents>virtual\Scripts\activate.bat
(virtual) C:\Users\fujino\Documents>

Linux

ファイルを指定して「source」コマンドを実行します。

仮想環境を作成したディレクトリのなかに「bin」ディレクトリがあって、さらにそのなかの「activate」ファイルを指定します。

$ source virtual/bin/activate
(virtual) ~/wsl$

(仮想環境のあるディレクトリ名)が付いていて、仮想環境が有効になっています。

こちらも一応インストールされているパッケージリストを確認しておきます。

(virtual) ~/wsl$ pip list
Package    Version
---------- -------
pip        21.2.3
setuptools 57.4.0

真新しい環境です。

仮想環境の無効化

仮想環境から抜けて、現環境に戻るには、「deactivate」と打ちます。

Windows・Linux共通です。

(virtual) PS C:\Users\fujino\Documents> deactivate
PS C:\Users\fujino\Documents> deactivate
(virtual) ~/wsl$ deactivate
~/wsl$

実行すると頭に付いていた(ディレクトリ名)が外れます。

まとめ

仮想環境の作成
python[3] -m venv ディレクトリのパス

仮想環境の有効化
(Windows)
PowerShellは、フォルダ内のScriptsの「Activate.ps1」を実行
コマンドプロンプトは、フォルダ内のScriptsの「activate.bat」

(Linux)
sourceでディレクトリ内の「bin/activate」を実行

仮想環境の無効化
deactivate

使わなくなった環境はディレクトリごと削除すればOKなので、複数の環境も簡単に作ることができます。

このページが少しでもお役に立てたのなら幸いです。

タイトルとURLをコピーしました