pipenvとは?「使い方」や「よく使うコマンド」をわかりやすく解説!

Pythonで開発をしていると、こんな悩みに直面することってありませんか?

  • プロジェクトごとに使うパッケージがバラバラで管理が大変…
  • 他の人と同じ環境で開発したいけど、環境構築が面倒…
  • 仮想環境(venvvirtualenv)とpipの使い分けがよくわからない…

こうした悩みをまとめて解決してくれるツールpipenv(ピップエンブ)です。

この記事では『pipenv』について、以下の内容をわかりやすく解説します。

  • pipenvとは?
  • pipenvの特徴
  • pipenvのインストール方法
  • pipenvの使い方
    • pipenvでよく使うコマンド
    • 仮想環境を新規作成する方法
    • パッケージのインストール方法
    • PipfilePipfile.lockを元に環境を作成する方法
    • 仮想環境を有効化する方法(仮想環境に入る方法)
    • 仮想環境を無効化する方法(仮想環境から出る方法)
    • 仮想環境を削除する方法
    • 仮想環境のパスを確認する方法
    • 仮想環境のパスを指定する方法
    • Pipfile.lockをもとにrequirements.txtを出力する方法
    • 依存関係のグラフ(ツリー)を確認する方法

pipenvとは?

pipenvは、Pythonで開発するときにとても便利なパッケージ管理ツールです。

pip(パッケージ管理ツール)」と「virtualenv(仮想環境を作るツール)」をひとつにまとめたようなツールであり、以下のような機能を提供しています。

  • プロジェクトごとに必要なパッケージを整理して管理する
  • コマンドひとつで自動的に仮想環境を作る
  • パッケージの情報をファイルに記録して、あとから同じ環境を再現する

Node.jsを使ったことがある人なら、「pipenv」は「npm」や「yarn」のような存在と考えるとわかりやすいです。

pipenvの特徴

pipenvには、Python開発を便利にしてくれる特徴がたくさんあります。ここでは、以下に示す主な4つの特徴を順番に紹介します。

  • PipfileとPipfile.lockによるパッケージ管理ができる
  • 仮想環境を自動的に作成・管理できる
  • pyenvとの連携がスムーズ
  • スクリプトの登録と実行も可能

① PipfileとPipfile.lockによるパッケージ管理ができる

pipenvでは、従来のrequirements.txtの代わりにPipfilePipfile.lockという2つのファイルでインストールしたパッケージの情報を管理します。

インストールされるすべてのパッケージの情報(パッケージの依存関係やバージョン等の情報)はPipfile.lockに記録されます。このファイルを元に環境構築をすることで環境を完全に再現することができます。

PipfileとPipfile.lock

  • Pipfile
    • 自分が明示的にインストールしたパッケージだけが記録されます。
    • バージョンは「範囲指定」が可能です。
      • 例:requests = ">=2.25"のように、「2.25以上ならOK」という書き方も可能です。
    • 開発者が手動でPipfileを編集してもOKです(実際、編集する場面もあります)。
    • Node.jsのpackage.jsonのような役割です。
  • Pipfile.lock
    • Pipfileに書かれたパッケージだけでなく、それに依存するすべてのパッケージも記録します。
    • バージョンは完全に固定されます。
      • 例:requests 2.25.1のようにピンポイントで指定されます
    • このファイルを使うことで、どの開発者が使ってもまったく同じ環境を再現できるようになります。
    • Pipfile.lockは手動で編集してはいけません。これは「pipenvが自動で作るファイル」です。
    • Node.jsのpackage-lock.jsonyarn.lockのような役割です。

② 仮想環境を自動的に作成・管理できる

pipenv installpipenv syncを実行して、PipfilePipfile.lockに記載されているパッケージをインストールした際、自動的にプロジェクト専用の仮想環境も作成されます。わざわざpython -m venvvirtualenvを使う必要はありません。しかも、仮想環境のパスもPipenvが内部的に管理してくれるので、面倒な設定や切り替え作業も不要です。

③ pyenvとの連携がスムーズ

pyenvを使っていれば、pipenv --python <バージョン>のコマンド実行時に指定されたバージョンが自動的にインストールされ、そのバージョンに対応する仮想環境が構築されます。これにより、Python本体のバージョン管理もpipenvと一緒にできるようになります。

あわせて読みたい

pyenv』については下記の記事で詳しく説明しています。興味のある方は下記のリンクからぜひチェックをしてみてください。

④ スクリプトの登録と実行も可能

Pipfileに「スクリプト(scripts)」を登録すれば、よく使うコマンドをpipenv run <コマンド名>で簡単に実行できます。これを使えば、開発やテストに使うコマンドをチームで共有したり、ミスなく実行できたりして便利です。Node.jsのnpm run <コマンド名>のようなイメージです。

pipenvのインストール方法

まずは、pipenv本体をインストールします。とても簡単でpipコマンドでインストールすることができます。

pip install pipenv

pipはPythonに標準で付いてくるパッケージ管理ツールです。

上記のコマンドを実行すると、pipenvというツールがシステムにインストールされます。

インストールされたかを以下のコマンドを実行して確認してみましょう。

pipenv --version

実行結果の例

$ pipenv --version
pipenv, version 2025.0.4

コマンドを実行して、バージョンが表示されれば、pipenvが正常にインストールできています。

エラーが発生した場合

pip install pipenvを実行してPipenvをインストールしたのに、次のようなエラーが出ることがあります。

$ pipenv --version
Command 'pipenv' not found, but can be installed with:
sudo apt install pipenv

これは、pipでインストールしたpipenvがシステムの「パス(PATH)」に通っていないことが原因です。pipでインストールしたツールは通常、~/.local/binに配置されますが、この場所がPATHに含まれていないと、ターミナルからpipenvを実行できません。まずは、以下のコマンドでpipenvがどこにインストールされたかを確認してみましょう。

python3 -m site --user-base

たとえば、出力が/home/user01/.localのようになっていれば、実行ファイルは/home/user01/.local/bin/にあることになります。この場所をPATHに追加するには、使っているシェルの設定ファイル(たとえばbashなら.bashrc)に以下の1行を追記します。

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

その後、設定を反映するために以下のコマンドを実行します。

source ~/.bashrc

これで、再びpipenv --versionを実行すれば、バージョン情報が表示されるはずです。PATHが通っていなかっただけなので、環境変数を正しく設定すれば問題は解消します。

pipenvでよく使うコマンド

以下にpipenvでよく使うコマンド一覧を表形式でまとめました(後ほど各コマンドについて詳しく説明します)。

コマンド説明
pipenv --python <バージョン>指定したPythonバージョンで新しい仮想環境を作成する
pipenv installPipfileに基づいてパッケージをインストール
pipenv install <パッケージ名>指定したパッケージをインストールし、Pipfileに追加
pipenv install <パッケージ名>==<バージョン>指定バージョンのパッケージをインストール
pipenv install <パッケージ名> --dev開発専用パッケージをインストール
pipenv syncPipfile.lockに基づいて環境を完全に再現する
pipenv sync --devPipfile.lockに基づき、開発用パッケージも含めて環境を完全に再現する
pipenv uninstall <パッケージ名>指定したパッケージをアンインストールし、Pipfileから削除
pipenv uninstall --all仮想環境から全パッケージを削除
pipenv shell仮想環境を有効化
exit または Ctrl + D仮想環境を無効化
pipenv --rm仮想環境を削除する
pipenv --venv仮想環境のパスを表示する
pipenv requirementsPipfile.lockを基にrequirements.txt形式で依存関係を出力
pipenv graphパッケージの依存関係をツリー形式で表示
pipenv run <コマンド>仮想環境内で任意のコマンドを実行(例:pipenv run python app.py

仮想環境を新規作成する方法

事前準備

新しくPythonプロジェクトを始める場合、まず作業用のディレクトリ(フォルダ)を作り、移動しましょう。

mkdir test-project && cd test-project

仮想環境を作成するには、以下のコマンドを実行します。

pipenv --python 3.12

このコマンドを実行すると、以下のことが自動的に行われます。

  • Python 3.12を使った仮想環境が作られる
    • 手元の環境で使える3.12系の中で、最も新しいバージョンが使われます(例:3.12.11など)。
    • 「3.12.1 を使いたい!」という場合はpipenv --python 3.12.1のように指定してください。
    • pipenv --python 3(Python 3系を使う)という指定も可能です。
  • Pipfileが自動生成される

自動生成されたPipfileの中身は以下のようになっています。

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]

[dev-packages]

[requires]
python_version = "3.12"
python_full_version = "3.12.11"

pyenv(Pythonバージョン管理ツール)を使っている場合

pyenv(Pythonバージョン管理ツール)を使っている場合、指定したPythonのバージョンがインストールされていなくても、pipenvが自動的にインストールしてくれます。例えば、Python 3.6系がインストールされていない状態で以下のコマンドを実行したとします。

pipenv --python 3.6

環境にPython 3.6系が無いので、以下のようなメッセージが表示され、自動的にインストールしてくれます。

$ pipenv --python 3.6
Warning: Python 3.6 was not found on your system...
Would you like us to install CPython 3.6.15 with Pyenv? [y/n] (y): y
Installing CPython 3.6.15 with /home/user01/.pyenv/bin/pyenv
(this may take a few minutes)...
✔ Success!
⠧ Installing python...patching file configure
...(以下略)

このように、pyenvとpipenvは連携して動作するため、開発環境の構築が非常にスムーズです。

パッケージのインストール方法

新しく追加したいパッケージ(例: numpy)は以下のコマンドでインストールします。

pipenv install numpy

このコマンドを実行すると、numpyパッケージが仮想環境にインストールされ、Pipfile[packages]に以下のように追記されます。

[packages]
numpy = "*"

同時にPipfile.lockも生成または更新され、実際にインストールされた正確なバージョン依存パッケージが記録されます(Pipfile.lockはとても行数が長いのでこの記事に載せるのは割愛しています)。

pipenv installコマンド実行時において、仮想環境が作られていない場合には、仮想環境が自動で作成されます。

バージョンを指定してインストールする方法

パッケージのバージョンを明示的に指定したいときは、以下のようにします。

pipenv install numpy==2.3.2    # 完全固定(更新されない)
pipenv install numpy~=2.3      # 2.3以上、2.4未満(推奨)

==はそのバージョンにピン留めしますが、更新できなくなるため、~=(チルダイコール)による「メジャーバージョンロック」が推奨されています。

開発専用パッケージをインストールする方法(--dev)

テストツールやコード整形ツールなど、開発のみで使用し製品には含めない開発専用パッケージ--devオプションでインストールできます。

pipenv install --dev pytest autopep8 flake8

--devオプションを指定した場合Pipfile[dev-packages]に以下のように追記されます。

[dev-packages]
pytest = "*"
autopep8 = "*"
flake8 = "*"

PipfileやPipfile.lockを元に環境を作成する方法

Pythonプロジェクトでは、すでに誰かが作成したPipfilePipfile.lockが存在することがあります。この場合において、自分の環境に仮想環境を再構築する方法について解説します。

パターン①:Pipfileに基づいて環境を作成する

Pipfileに基づいて環境を作成する場合には以下のコマンドを実行します。

pipenv install

このコマンドを実行すると、以下のこと行われます。

  • Pipfileに書かれたパッケージをもとに、仮想環境を新しく作成します。
  • Pipfile.lockがまだない場合は、新たに生成されます。
  • インストールされるパッケージのバージョンは「Pipfileの指定に従って」決まります。

開発専用パッケージも含めてインストールしたい場合には、以下のコマンドを実行します。

pipenv install --dev

上記のコマンドを実行すると、Pipfile[dev-packages]に書かれた開発専用パッケージも一緒にインストールされます。

パターン②:Pipfile.lockに基づいて環境を作成する(完全再現)

Pipfile.lockに基づいて環境を作成する場合には以下のコマンドを実行します。

pipenv sync

このコマンドを実行すると、以下のこと行われます。

  • Pipfile.lockに書かれたすべてのパッケージとそのバージョンを完全に再現して、仮想環境を新しく作成します。
  • 環境の完全一致が保証されます(チーム開発ではこのコマンドを実行することをおすすめします)。

開発専用パッケージも含めてインストールしたい場合には、以下のコマンドを実行します。

pipenv sync --dev

上記のコマンドを実行すると、本番用と開発用のすべてのパッケージを、Pipfile.lockの情報通りにインストールします。

【補足】旧形式(requirements.txt)からの移行も可能

もし以前のプロジェクトでrequirements.txtが使われていた場合でも、pipenvは対応できます。以下のコマンドを実行すると、requirements.txtの内容を読み込み、PipfilePipfile.lockを生成します。

pipenv install -r requirements.txt

仮想環境を有効化する方法(仮想環境に入る方法)

Pythonの開発では、仮想環境を有効化(アクティブ化)して、その中で作業することがよくあります。以下のコマンドを実行すると、仮想環境を有効化することができます。

pipenv shell

このコマンドを実行すると、以下のこと行われます。

  • 現在のシェル(ターミナル)内で、pipenvが作成した仮想環境が有効になります。
  • いわゆるsource .venv/bin/activateに相当します。
  • プロンプトが変わり、仮想環境名が表示されます(例:(mypipenv-abc123)など)。
  • この状態では、仮想環境内のPythonやパッケージだけが使われるようになります。

仮想環境を無効化する方法(仮想環境から出る方法)

仮想環境から抜ける(元のシェルに戻る)には、次のコマンドを実行します。

exit

Ctrl + D でも仮想環境から抜けることができます。

仮想環境を削除する方法

以下のコマンドを実行すると、現在のディレクトリに作られているpipenvの仮想環境が削除されます。

pipenv --rm

このコマンドを実行すると、以下のこと行われます。

  • pipenvが管理していた仮想環境フォルダごと削除されます。
  • ただし、PipfilePipfile.lock削除されません
  • そのため、あとでpipenv installpipenv syncを使えば、すぐに同じ環境を再構築できます。

例えば、以下のように仮想環境を削除して、再度環境を構築することはよく行われる操作です。

# 仮想環境を削除(リセット)
$ pipenv --rm

# Pipfile.lockから環境を再構築
$ pipenv sync --dev

仮想環境のパスを確認する方法

pipenvでは、仮想環境は自動的に管理されるため、仮想環境フォルダを手動で作成・操作する必要はありません(どこにあるかを気にする必要もありません)。ただし、「仮想環境の場所を知りたい」・「作成される仮想環境の場所を指定したい」場合もありますよね。仮想環境がどこに作られているか確認したいときは、次のコマンドを使います。

pipenv --venv

実行結果の例

Linux/macOSの場合
/home/username/.local/share/virtualenvs/test-project-z_9CLMvu

Windowsの場合
C:\Users\username\.virtualenvs\test-project-z_9CLMvu

pipenvはプロジェクトのディレクトリ名などをもとに、ユニークな名前で仮想環境を自動生成します。

仮想環境の保存場所(デフォルト)

OSデフォルトの保存場所
Windows%USERPROFILE%\.virtualenvs
Linux/macOS$HOME/.local/share/virtualenvs

仮想環境のパスを指定する方法

次に、作成される仮想環境の場所を変更する方法について説明します。プロジェクトの中に仮想環境を置きたいときは、次の環境変数を設定します。

Linux/macOSの場合
export PIPENV_VENV_IN_PROJECT=true

Windowsの場合
set PIPENV_VENV_IN_PROJECT=true

設定後はプロジェクト直下に.venvフォルダが作られ、仮想環境がそこに作成されます。

your-project/
├── .venv/          ← 仮想環境がここにできる
├── Pipfile
└── Pipfile.lock

.venvがプロジェクト内にあると、他の人と共有しやすい&エディタ(VSCodeなど)が認識しやすいというメリットがあります。

ここまで書いた!

Pipfile.lockをもとにrequirements.txtを出力する方法

他の環境やCIツールなどで「pip install -r requirements.txt」を使いたいことがある場合があります。この場合、pipenvでは以下のコマンドでrequirements.txtを出力できます。このコマンドではPipfile.lockをもとにrequirements.txtを生成しています。

pipenv requirements

実行結果の例

$ pipenv requirements
-i https://pypi.org/simple
blinker==1.9.0; python_version >= '3.9'
click==8.2.1; python_version >= '3.10'
flask==3.1.1; python_version >= '3.9'
itsdangerous==2.2.0; python_version >= '3.8'
jinja2==3.1.6; python_version >= '3.7'
markupsafe==3.0.2; python_version >= '3.9'
numpy==2.3.2; python_version >= '3.11'
pandas==2.3.1; python_version >= '3.9'
python-dateutil==2.9.0.post0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'
pytz==2025.2
six==1.17.0; python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2'
tzdata==2025.2; python_version >= '2'
werkzeug==3.1.3; python_version >= '3.9'

この出力は、pipでそのままインストールできる形式になっています。

また、標準出力(ターミナルに表示される内容)をrequirements.txtに保存するには、リダイレクト(>)を使います。

pipenv requirements > requirements.txt

これでrequirements.txtがプロジェクトディレクトリに生成されます。

依存関係のグラフ(ツリー)を確認する方法

どのパッケージがどのパッケージに依存しているかを確認したいときは、以下のコマンドで依存関係をグラフ(ツリー)を形式で出力することができます。

pipenv graph

実行結果の例

$ pipenv graph
autopep8==2.3.2
└── pycodestyle 
flake8==7.3.0
├── mccabe 
├── pycodestyle 
└── pyflakes 
Flask==3.1.1
├── blinker 
├── click 
├── itsdangerous 
├── Jinja2 
│   └── MarkupSafe 
├── MarkupSafe 
└── Werkzeug 
    └── MarkupSafe 
pandas==2.3.1
├── numpy 
├── python-dateutil 
│   └── six 
├── pytz 
└── tzdata 
pytest==8.4.1
├── iniconfig 
├── packaging 
├── pluggy 
└── Pygments 

上図の実行結果から、どのパッケージがどのライブラリを必要としているかが一目でわかります。

なお、詳細を知りたい場合には、pipenv install --dev pipdeptreeを実行して、pipdeptreeをインストール後に、以下のコマンドを実行します。

pipenv run pipdeptree

実行結果の例

$ pipenv run pipdeptree
autopep8==2.3.2
└── pycodestyle [required: >=2.12.0, installed: 2.14.0]
flake8==7.3.0
├── mccabe [required: >=0.7.0,<0.8.0, installed: 0.7.0]
├── pycodestyle [required: >=2.14.0,<2.15.0, installed: 2.14.0]
└── pyflakes [required: >=3.4.0,<3.5.0, installed: 3.4.0]
Flask==3.1.1
├── blinker [required: >=1.9.0, installed: 1.9.0]
├── click [required: >=8.1.3, installed: 8.2.1]
├── itsdangerous [required: >=2.2.0, installed: 2.2.0]
├── Jinja2 [required: >=3.1.2, installed: 3.1.6]
│   └── MarkupSafe [required: >=2.0, installed: 3.0.2]
├── MarkupSafe [required: >=2.1.1, installed: 3.0.2]
└── Werkzeug [required: >=3.1.0, installed: 3.1.3]
    └── MarkupSafe [required: >=2.1.1, installed: 3.0.2]
pandas==2.3.1
├── numpy [required: >=1.26.0, installed: 2.3.2]
├── python-dateutil [required: >=2.8.2, installed: 2.9.0.post0]
│   └── six [required: >=1.5, installed: 1.17.0]
├── pytz [required: >=2020.1, installed: 2025.2]
└── tzdata [required: >=2022.7, installed: 2025.2]
pipdeptree==2.28.0
├── packaging [required: >=24.1, installed: 25.0]
└── pip [required: >=24.2, installed: 25.2]
pytest==8.4.1
├── iniconfig [required: >=1, installed: 2.1.0]
├── packaging [required: >=20, installed: 25.0]
├── pluggy [required: >=1.5,<2, installed: 1.6.0]
└── Pygments [required: >=2.7.2, installed: 2.19.2]

本記事のまとめ

この記事では『pipenv』について、以下の内容を説明しました。

  • pipenvとは?
  • pipenvの特徴
  • pipenvのインストール方法
  • pipenvの使い方
    • pipenvでよく使うコマンド
    • 仮想環境を新規作成する方法
    • パッケージのインストール方法
    • PipfilePipfile.lockを元に環境を作成する方法
    • 仮想環境を有効化する方法(仮想環境に入る方法)
    • 仮想環境を無効化する方法(仮想環境から出る方法)
    • 仮想環境を削除する方法
    • 仮想環境のパスを確認する方法
    • 仮想環境のパスを指定する方法
    • Pipfile.lockをもとにrequirements.txtを出力する方法
    • 依存関係のグラフ(ツリー)を確認する方法

お読み頂きありがとうございました。

スポンサーリンク