お悩み女子Pythonを始めようとしたら、まず仮想環境を作るよう言われた。venv、uv、Poetryと種類もあって、何を選べばいいのか分からない……
仮想環境はツールごとに Python のライブラリを分けて入れておく専用の置き場です。Excel を操作するツールと CSV を集計するツールで、同じライブラリの別のバージョンが必要になっても、ぶつからずに動かせます。
Python仮想環境の作り方と、venv・uv・Poetry のどれを選ぶかの判断を、動かした結果つきで紹介します。載せているコマンドはWindows 11 と Python 3.12 で動くことを確かめています。uv は 0.13.1、Poetry は 2.5.1 で確かめました。
- 仮想環境が必要になる場面と、できること
- venv で作って使う手順(コマンドプロンプトと PowerShell)
- requirements.txt で同じ環境を作り直す方法
- venv・uv・Poetry の違いと、動かして分かった注意点
- 業務スクリプトで使うときの選び方
Python仮想環境とは|ツールごとにライブラリを分けて入れる仕組み
公式のチュートリアルは仮想環境を特定のバージョンの Python と追加のパッケージ(ライブラリ)を含む、独立したディレクトリと説明しています。実体は .venv などの名前のフォルダで、公式ドキュメントでは削除して作り直せる使い捨てのものとして扱われています。
1つの Python にライブラリを全部入れると、ツール A は古いバージョン、ツール B は新しいバージョンを必要とする、という食い違いが起こります。公式チュートリアルも解決策として仮想環境を挙げています。
自動化ツールが増えるほど役立つ仕組みで、1つのツールに1つの仮想環境と考えると整理しやすくなります。
Python仮想環境の作り方|venvで作って使う4ステップ
venv は Python に最初から入っているので、追加のインストールは要りません。Windows 11 で、売上ツール用のフォルダ(sales-tool)に仮想環境を作る流れを見ていきます。
① 仮想環境を作る
フォルダの中で、次のコマンドを実行します。.venv は作る場所の名前で、公式チュートリアルも一般的な名前として紹介しています。
py -3.12 -m venv .venv
作った直後の中身を確かめるため、Excel を扱うライブラリ openpyxl を読み込んでみます。
.venv\Scripts\python.exe -c "import openpyxl"
ModuleNotFoundError: No module named 'openpyxl'
このPCでは、仮想環境の外の Python に openpyxl が入っていますが、新しい仮想環境の中にはないので、エラーになります。仮想環境の中は、作った直後はほぼ空です。
② 有効にする
有効にすると、以降の python と pip がこの仮想環境のものになります。コマンドプロンプトでは次のとおりです。
.venv\Scripts\activate
プロンプトの先頭に (.venv) と表示されれば、有効になっています。PowerShell では次の書き方です。
.venv\Scripts\Activate.ps1
PowerShell の実行ポリシー(スクリプトを動かしてよいかの設定)が Restricted の場合は、次のエラーが出ます。
このシステムではスクリプトの実行が無効になっているため、ファイル(中略)\.venv\Scripts\Activate.ps1 を読み込むことができません。
(中略)
+ FullyQualifiedErrorId : UnauthorizedAccess
スクリプトの実行が無効なので、Activate.ps1 を読み込めないという意味です。実行ポリシーが RemoteSigned のときは、有効にできることを確かめています。
公式ドキュメントはSet-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser で変える方法を案内しています(ここでは実行していません)。会社のPCでは変えてよいかを先に確認してください。コマンドプロンプトなら、この設定は関係ありません。
③ ライブラリを入れて動かす
openpyxl で Excel ファイルを1つ作るだけの、小さなスクリプトを使います。ファイル名は make_book.py です。
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
ws.append(["店舗", "売上"])
ws.append(["東京", 120000])
wb.save("test.xlsx")
print("test.xlsx を保存しました")
コマンドプロンプトで、有効にしてから入れて動かします。ライブラリは python -m pip の形で入れると、有効にした Python と同じ環境に入ります。
.venv\Scripts\activate
python -m pip install openpyxl
python make_book.py
pip の出力は長いので、最後の1行だけ載せます。
Successfully installed et-xmlfile-2.0.0 openpyxl-3.1.5
test.xlsx を保存しました
test.xlsx が作られれば成功です。
④ 有効にしないで動かす
有効にする操作は必須ではありません。公式ドキュメントにも仮想環境の Python へのフルパスを指定すれば、有効にしなくても使えると書かれています。
.venv\Scripts\python.exe make_book.py
test.xlsx を保存しました
仮想環境の引き継ぎ|requirements.txtで同じ環境を作り直す
ツールを同僚に渡す、別のPCで動かすといった場面では、.venv フォルダを渡すのではなく、入れたライブラリの一覧を渡して作り直すのが基本です。公式ドキュメントでも、仮想環境は移動やコピーを想定したものではなく、同じ環境を移動先で作り直すもの、と説明されています。
① フォルダをコピーしたときの状態
sales-tool を sales-tool-copy という名前でフォルダごとコピーして、コピー側で pip のバージョンを確かめます。
.venv\Scripts\pip.exe --version
pip 25.0.1 from C:\(中略)\sales-tool\.venv\Lib\site-packages\pip (python 3.12)
コピー側で実行したのに、表示されたのはコピー元の .venv の場所です。コピーしたフォルダの中の pip が、元の環境を指しています。
② 入れたライブラリを書き出す
元の環境で pip freeze を使うと、入っているライブラリを「名前==バージョン」の形で書き出せます。ファイル名は requirements.txt にするのが慣習です(公式チュートリアルの案内)。
.venv\Scripts\activate
python -m pip freeze > requirements.txt
requirements.txt の中身は次のようになります。
et_xmlfile==2.0.0
openpyxl==3.1.5
openpyxl だけを入れたのに2行あるのは、openpyxl が使う et_xmlfile も一緒に入ったためです。バージョンまで固定されるので、同じ環境を作りやすくなります。
③ 別の場所で作り直す
渡すのは make_book.py と requirements.txt の2つです。受け取った側は新しいフォルダで仮想環境を作り、一覧から入れ直します。
py -3.12 -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt
.venv\Scripts\python.exe make_book.py
Successfully installed et_xmlfile-2.0.0 openpyxl-3.1.5
test.xlsx を保存しました
同じバージョンのライブラリが入り、スクリプトも動きます。.venv フォルダは Git などのバージョン管理に入れない、というのが公式ドキュメントの考え方です。
仮想環境ツールの比較|venv・uv・Poetry
仮想環境を作るツールは、venv のほかに uv と Poetry がよく挙がります。公式ドキュメントと、同じ make_book.py を動かした結果から、違いを表にまとめました。
| 項目 | venv | uv | Poetry |
|---|---|---|---|
| 入手 | Python に標準で付属 | 別にインストール(公式インストーラー・pip など) | 別にインストール(pipx・公式インストーラー) |
| 主な役割 | 仮想環境を作る(ライブラリは pip で入れる) | 仮想環境・ライブラリ・Python 本体をまとめて管理 | 仮想環境・ライブラリ・パッケージの配布を管理 |
| ライブラリの記録 | requirements.txt | pyproject.toml と uv.lock | pyproject.toml と poetry.lock |
| Python 本体 | 実行した Python が使われる | 必要なバージョンを入れて使える | 入れてくれない(手元の Python を使う) |
※公式ドキュメントと動作確認にもとづく内容です(2026年10月時点)。
uvで作る
uv は Rust で作られたツールで、公式は pip や virtualenv などの代わりになるものと説明しています。pip install uv でも入れられます。venv と同じ流れで使うなら、次の2行です。
uv venv --python 3.12
uv pip install openpyxl
Using CPython 3.12.12
Creating virtual environment at: .venv
+ et-xmlfile==2.0.0
+ openpyxl==3.1.5
このPCでは、uv が選んだのは手元の Python 3.12.10 ではなく、uv が自分で管理している Python 3.12.12 でした。
uv にはライブラリの記録まで任せる「プロジェクト形式」もあります。
uv init --bare --python 3.12
uv python pin 3.12
uv add openpyxl
uv run make_book.py
pyproject.toml に openpyxl が記録され、uv.lock と .venv も作られます。
注意したいのは Python のバージョンです。--python を付けずに uv init を実行した別のフォルダでは、requires-python = ">=3.14" と書かれ、使われたのは Python 3.14.2 でした。uv は Python のバージョンも自分で選ぶので、使うバージョンを決めているなら、最初に指定して固定します。
Poetryで作る
Poetry は公式ドキュメントで依存関係管理とパッケージングのツールと説明されています。Python 3.10 以上が必要で、入れ方は pipx か公式インストーラーが案内されています。プロジェクトを作ってライブラリを足す流れは、次のとおりです。
poetry init --no-interaction
poetry add openpyxl
poetry install
poetry add までは進みますが、poetry install の最後に次のエラーが出ます。
Installing the current project: sales-tool (0.1.0)
Error: The current project could not be installed: No file/folder found for package sales-tool
Poetry は初期設定のままだと配布用のパッケージを作る前提で動きます。売上ツールのような、スクリプトを置いただけのフォルダには合いません。公式ドキュメントの案内どおり、pyproject.toml の末尾に次の2行を足すと、ライブラリだけを入れる動きになります。
[tool.poetry]
package-mode = false
poetry install
poetry run python make_book.py
test.xlsx を保存しました
Python のバージョンにも注意が要ります。このPCで何も指定せずに作ると Python 3.11.15 の仮想環境になり、poetry env use 3.12 で指定し直すと Python 3.12.12 になりました。なお、Poetry の仮想環境は既定ではキャッシュ内に作られます(上の例は設定 virtualenvs.in-project で .venv にしています)。
Python仮想環境の選び方|業務スクリプトならvenvから
どのツールでも、同じスクリプトは動きます。違いが出るのは、準備の手間と、あとで困りやすい点です。筆者なら、場面ごとに次のように選びます。
お悩み女子会社の業務で使うなら、結局どれから始めるのがいいの?
なべくんExcel や CSV を扱うスクリプトなら、まず venv です。場面ごとの理由を見ていきます。
Excelやcsvのスクリプトを数本動かす場合
まずはvenv と requirements.txtです。追加のインストールが要らず、会社のPCでも始めやすいのが理由です。渡すときも、requirements.txt があれば相手に伝わります。
Pythonのバージョンも切り替えたい場合
PCに入っている Python と違うバージョンで動かしたいときは、uvが候補です。Python 本体を用意するところまで任せられます。
公式の標準インストーラーはPowerShell で irm https://astral.sh/uv/install.ps1 | iex を実行する形です(ここでは実行していません)。会社のPCではこの形で入れてよいかを確認します。
ライブラリを配布する場合
自分で作ったコードをライブラリとして公開する、複数人の開発でバージョンを固定したい、といった場面ではPoetryの出番です。業務の自動化スクリプトを数本動かすだけなら、最初は要りません。
仮想環境に関するよくある質問
仮想環境を作らずに使う場合と、作ったフォルダを削除する場合について答えます。
- 仮想環境を作らずに Python を使うとだめですか?
-
だめではありません。作らなくても動きます。ただ、複数のツールを動かすと、必要なライブラリのバージョンがぶつかることがあります。
.venvフォルダは消してもよいですか?-
消せます。公式ドキュメントでは、仮想環境は削除して作り直せるものとして扱う、と説明されています。
requirements.txtがあれば作り直せます。.venv の中にスクリプトを置いていると一緒に消えるので、スクリプトは外に置きます。
まとめ|Python仮想環境はまずvenvとrequirements.txtから
仮想環境のポイントを整理します。
仮想環境とは:ツールごとにライブラリを分けて入れるフォルダ。
venv の手順:py -3.12 -m venv .venv で作り、python -m pip install で入れる。フルパスなら有効化は不要。
引き継ぎ:フォルダのコピーではなく、requirements.txt から作り直す。
uv・Poetry:uv は Python のバージョンも選ぶ。Poetry はスクリプト用に package-mode = false が必要。
選び方:迷ったら venv。必要になってから uv や Poetry を検討する。
まずは今動かしているスクリプトのフォルダに仮想環境を作り、requirements.txt を書き出すところから始めてみてください。
仮想環境と一緒に読むと役立つ記事を紹介します。
- Pythonのインストール手順|Windows・Mac・Linux対応
- WindowsタスクスケジューラでPythonを定期実行する方法
- GitでPythonスクリプトを管理する基本|戻せる作業環境を作る
参考資料
venv — 仮想環境の作成 | Python 3 ドキュメント
仮想環境とパッケージ | Python チュートリアル
uv ドキュメント
Basic usage | Poetry ドキュメント
User Guide | pip ドキュメント
