MENU

Python仮想環境の作り方|venv・uv・Poetry比較

当ページのリンクには広告(PR)が含まれていることがあります。
【2025年版】python仮想環境の最適構築法|初心者からプロまで目的別徹底解説のアイキャッチ
お悩み女子

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 を保存しました

有効にする操作を挟めない場面でも、python.exe のフルパスを書けば仮想環境で動かせます。Windows のタスクスケジューラで定期実行するときの書き方は、別の記事で扱っています。

仮想環境の引き継ぎ|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.exe でライブラリを入れると、入るのはコピー元の環境です。フォルダのコピーで仮想環境を増やすのは避けます。

② 入れたライブラリを書き出す

元の環境で 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 を動かした結果から、違いを表にまとめました。

スクロールできます
項目venvuvPoetry
入手Python に標準で付属別にインストール(公式インストーラー・pip など)別にインストール(pipx・公式インストーラー)
主な役割仮想環境を作る(ライブラリは pip で入れる)仮想環境・ライブラリ・Python 本体をまとめて管理仮想環境・ライブラリ・パッケージの配布を管理
ライブラリの記録requirements.txtpyproject.toml と uv.lockpyproject.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 を書き出すところから始めてみてください。

仮想環境と一緒に読むと役立つ記事を紹介します。

参考資料
venv — 仮想環境の作成 | Python 3 ドキュメント
仮想環境とパッケージ | Python チュートリアル
uv ドキュメント
Basic usage | Poetry ドキュメント
User Guide | pip ドキュメント

この記事を書いた人

Watanabeのアバター Watanabe サイト運営者

2020年よりブログ開始。
SEOが思いのほか性にあっていたようで現在に至る。
モットーは「勝率の高い選択をする」
AIは活用するが吉、最後は人間が息を吹き込む。
アートと科学を追求し、日々精進。
―――
収益:6~7桁をウゴウゴ。
サイト:ペラサイト~中規模サイトまで運営中。
案件:1000円以上の案件をメインに取組中。
打ち手:ブラックSEO~ホワイトSEOまで
―――

目次