Pythonの標準ライブラリ「venv」を使用して、仮想環境の作成と有効化をやっていきます。
仮想環境を使用すると、現環境を汚さずにちょっとしたパッケージを試すことができたり、特定の環境を模してテストすることができるようになります。
WindowsとLinux両方の環境で実行しますが、Macの方はLinuxの方を参考にしてください。
公式ドキュメント
venv --- 仮想環境の作成
使用した環境
Windows10 PowerShell
WSL2 Ubuntu - 20.04 Bash
Python3.10.0
仮想環境の作成
標準ライブラリ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」ついては次のリンク内を参照。
では管理者として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なので、複数の環境も簡単に作ることができます。
このページが少しでもお役に立てたのなら幸いです。