Pythonの仮想環境についてのまとめ(Windows)
環境
> py -V
Python 3.11.1
以下のフォルダに sample というプロジェクトを作成する。
> cd c:\work\python
> mkdir sample
> cd sample
仮想環境の作成
> py -m venv venv
以下のようなフォルダ構造になる。
sample/
+-- venv/
+-- Include/
+-- Lib/
+-- site-packages/
+-- Scripts/
+-- activate
+-- activate.bat
+-- Activate.ps1
+-- deactivate.bat
+-- pip.exe
+-- pip3.11.exe
+-- pip3.exe
+-- python.exe
+-- pythonw.exe
+-- pyvenv.cfg
仮想環境を有効にする
sampleフォルダでコマンドプロンプトを起動した場合
c:\work\python\sample> venv\Scripts\activate
(venv) c:\work\python\sample>
となる。
PowerShellを起動した場合
まず以下のコマンドを実行して、スクリプトの実行が許可されるようにしておく。
PS C:\work\python\sample> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
このコマンドの実行はこの1回でよい。
このあと、以下のコマンドを実行する。
PS C:\work\python\sample> venv/Scripts/Activate.ps1
(venv) PS C:\work\python\sample>
仮想環境を解除する
これは、コマンドプロンプト、PowerShell とも同じである。
(venv) c:\work\python\sample> deactivate
c:\work\python\sample>
仮想環境で動作する python、pip コマンド
仮想環境においては、python、pip の実行は 仮想環境の中の
実行ファイルが起動する。
コマンドプロンプトの場合
(venv) c:\work\python\sample> where python
c:\work\python\sample\venv\Scripts\python.exe
C:\Users(ユーザー名)\AppData\Local\Program\Python\Python311\python.exe
C:\Users(ユーザー名)\AppData\Local\Microsoft\WindowsApps\python.exe
リストの上が優先されるようである。
(venv) c:\work\python\sample> where pip
c:\work\python\sample\venv\Scripts\pip.exe
C:\Users(ユーザー名)\AppData\Local\Program\Python\Python311\pip.exe
PowerShell の場合
(venv) PS C:\work\python\sample> gcm python | fl
Name : python.exe
…
Definition : C:\work\python\sample\venv\scripts\python.exe
FileVersionInfo : ...
OriginalFilename: py.exe
…
OriginalFilename: に py.exe とあるから、C:\windows\py.exe がランチャー
として動作しているということだろう。
(venv) PS C:\work\python\sample> gcm pip | fl
Name : pip.exe
…
Definition : C:\work\python\sample\venv\scripts\pip.exe
…
ということなので、仮想環境では、以下のようになる。
pyコマンド: 仮想環境の pythonコマンドが動く。
pythonコマンド: 仮想環境の pythonコマンドが動く。
pipコマンド: 仮想環境の pip コマンドが動く。
python3コマンド: マイクロソフトのストアが起動し、python3 をインストールしようとする。
なお、pip3コマンドは、pipコマンドが動作する。
ライブラリをインストールする
qrcode というライブラリをインストールしてみる。
(venv) c:\work\python\sample> pip install qrcode
qrcode、pypng、typing-extensions、colorama という4つの関連ライブラリが
.\venv\Lib\site-packages 以下にインストールされたのがわかる。
venvフォルダをUSBメモリに入れる、もしくは github にプッシュするのはダメ
venvフォルダは巨大になるので、USBメモリにコピーしたり、githubにプッシュしたりするのは無理である。(どうしてもやりたいというのであれば、是非もないが…)
そこで、インストールしたライブラリのリストを作成し、それをコピーすることになる。
ライブラリ・リストの作成
リスト名は requirements.txt が使われている。
(venv) c:\work\python\sample> pip freeze > requirements.txt
USBメモリへのコピー
qr.py を作成したとするならば、qr.py と requirements.txt を USBメモリに
コピーすることになる。
Githubへのプッシュ
以下の内容の .gitignore ファイルを作成する。
.gitignore
venv/
.gitignoreファイルで、除外するファイルやフォルダを指定できる。
そのうえで、プッシュすればよい。
ライブラリの復元
作成した requirements.txt からライブラリを復元するには、以下のようにおこなう。
別のPCの c:\work に sample プロジェクトを作成したとする。
まず、仮想環境を作成して有効化する。
c:\work\sample> py -m venv venv
c:\work\sample> venv\scripts\activate (あるいは venv\scripts\activate.ps1)
(venv) c:\work\sample>
ライブラリを復元する。
(venv) c:\work\sample> pip install -r requirements.txt
カテゴリー: memo, Python, Python3
タグ: activate, deactivate, requirements.txt, venv
カウント: 180