🛠️

Python Venv メモ (Windows上)

2024/08/10に公開

Venvとは

・pip (Pythonのパッケージ・ライブラリ管理システム)をプロジェクトごとに仮想環境として独立して管理できる
・メリットとして依存性の解決がしやすくなる

・venvは「virtualenv」がPython 3.3より標準機能となったもの
・別途ソフトウェアをインストールせずに使用できる

ドキュメント

venv --- 仮想環境の作成 — Pythonドキュメント
https://docs.python.org/ja/3/library/venv.html

環境

Windows11, PowerShell上で実行
Python 3.11.9

※Linux/WSLでは打ち込むコマンドが異なるため注意!

仮想環境作成

仮想環境にしたいディレクトリ(フォルダ)へ移動して仮想環境を作成する


ディレクトリパス: C:\Users\user\desktop\test
venv名: test_venv

> cd C:\Users\user\desktop\test
C:\Users\user\desktop\test> python -m venv test_venv

コマンドの実行後、ディレクトリtest_venvが生成されることを確認
(以下より..で表示を一部省略)

..esktop\test> ls

test_venv

ディレクトリtest_venv内には以下が含まれる

..esktop\test> cd test_venv
..esktop\test\test_venv> ls

Include
Lib
Scripts
pyvenv.cfg

仮想環境へ入る

作成しただけだと仮想環境へは入れていない
以下のコマンドで作成した仮想環境へ入る

..esktop\test\test_venv> cd ..
..esktop\test> test_venv\Scripts\Activate.ps1
(test_venv)..esktop\test>

初回実行時のエラー

Windows スタートメニューで「PowerShell」と入力
一覧から「Windows PowerShell」を右クリックして「管理者として実行」を選択

以下を実行して現在のユーザーのための実行ポリシーをRemoteSignedに設定

> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

RemoteSigned(ローカルで作成されたスクリプトは許可、リモートで作成されたスクリプトは信頼された発行者によって署名されている必要がある)

実行ポリシーが変更されているか確認

> Get-ExecutionPolicy -Scope CurrentUser

RemoteSigned

仮想環境から抜ける

仮想環境から抜ける場合は以下のコマンドを実行する。

(test_venv)..esktop\test> deactivate
..esktop\test>

仮想環境内でパッケージをインストールする

仮想環境へ入る

..esktop\test> source test_venv\Scripts\Activate.ps1 
(test_venv)..esktop\test>

仮想環境に現在インストールされているモジュールを確認
(初期段階ではpipとsetuptools のみ)

(test_venv)..esktop\test> pip list

Package    Version
---------- -------
pip        24.0
setuptools 65.5.0

必要なモジュールをpipでインストール (例:opencv (拡張モジュール群入り) )

(test_venv)..esktop\test> pip install opencv-contrib-python

インストールされたものを確認 (依存関係に基づいてモジュールがインストール)

(test_venv)..esktop\test> pip list

Package               Version
--------------------- ---------
numpy                 2.0.1
opencv-contrib-python 4.10.0.84
pip                   24.0
setuptools            65.5.0

仮想環境を抜けて仮想環境内でインストールが完結しているか確認

(test_venv)..esktop\test> deactivate
..esktop\test> pip list
#別の結果が出てくる

Discussion