My開発メモ

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