| この記事の要点 |
|
パッケージ管理ツールの全体像
| ツール | 本体管理 | ライブラリ管理 | 仮想環境 | 用途 |
|---|---|---|---|---|
| pip + venv | × | ○ | ○ | 標準・シンプル |
| pipenv | × | ○(Pipfile) | ○ 自動 | Web 開発 |
| poetry | × | ○(pyproject.toml) | ○ 自動 | ライブラリ公開・ロック厳密 |
| pyenv | ○ | × | × | 複数バージョン併用 |
| conda | ○ | ○ | ○ | データサイエンス |
| uv(新興) | ○ | ○ | ○ 高速 | 2024〜流行の Rust 製 |
1. pip の基本操作
# 最新バージョンに更新(最初にやる)
python -m pip install --upgrade pip
# パッケージインストール
pip install requests
pip install 'django>=4.2,<5.0' # バージョン指定
pip install -r requirements.txt # ファイルから一括
# アンインストール
pip uninstall requests
# 一覧
pip list
pip list --outdated # 古いもののみ
# 詳細
pip show requests
# 依存ツリー
pip install pipdeptree
pipdeptree
# 依存関係を requirements.txt として書き出し
pip freeze > requirements.txt
# キャッシュ削除
pip cache purge
2. venv で仮想環境
# プロジェクトディレクトリで
cd ~/projects/myapp
# venv 作成
python -m venv venv
# 有効化(Linux / macOS)
source venv/bin/activate
# 有効化(Windows PowerShell)
.\venv\Scripts\Activate.ps1
# 有効化(Windows コマンドプロンプト)
venv\Scripts\activate.bat
# 確認: プロンプトに (venv) が付く
(venv) $ which python
/home/user/projects/myapp/venv/bin/python
# 無効化
deactivate
# 削除(プロジェクトと一緒に)
rm -rf venv
.gitignoreに venv は必ず追加:
# .gitignore
venv/
.venv/
__pycache__/
*.pyc
.python-version
3. requirements.txt の運用
# requirements.txt - 直接依存だけ書く(推奨)
Django>=4.2,<5.0
djangorestframework>=3.14
mysqlclient>=2.2.0
gunicorn>=21.0
python-dotenv>=1.0
# 開発用は requirements-dev.txt に分離
# -r requirements.txt
# pytest>=7.0
# black>=23.0
# flake8>=6.0# 開発環境構築
pip install -r requirements.txt
pip install -r requirements-dev.txt
# 厳密ロックが必要なら pip-tools
pip install pip-tools
pip-compile requirements.in # requirements.txt 生成
pip-sync # ロックに合わせて env を完全一致
4. pipenv
pip install --user pipenv
cd ~/projects/myapp
# プロジェクト初期化(Pipfile 生成)
pipenv install django
# 開発用パッケージ
pipenv install --dev pytest black
# 仮想環境で実行
pipenv run python manage.py runserver
# シェル起動
pipenv shell
# Pipfile.lock からインストール
pipenv install --deploy
# 仮想環境の場所
pipenv --venv
5. poetry(モダン主流)
# インストール
curl -sSL https://install.python-poetry.org | python3 -
# 新規プロジェクト
poetry new myapp
# 既存ディレクトリで初期化
cd myapp
poetry init
# 依存追加
poetry add django djangorestframework
poetry add --group dev pytest black
# インストール
poetry install
# 仮想環境で実行
poetry run python manage.py runserver
# シェル起動
poetry shell
# ロックファイルから完全再現
poetry install --sync
# 依存更新
poetry update
# パッケージビルド・公開(PyPI)
poetry build
poetry publish
6. conda(データサイエンス向け)
# Miniconda インストール後
conda create -n myenv python=3.11
conda activate myenv
# C 拡張も含めて conda 一発
conda install numpy pandas scipy scikit-learn matplotlib
# conda にないものは pip
pip install some-pypi-only-package
# 環境エクスポート
conda env export > environment.yml
# 再現
conda env create -f environment.yml
7. uv(高速・Rust 製・2024〜)
# インストール
curl -LsSf https://astral.sh/uv/install.sh | sh
# pip 互換コマンド
uv pip install django
uv pip install -r requirements.txt
# venv 作成(python -m venv より 10〜100 倍高速)
uv venv
# Python 本体管理(pyenv 代替)
uv python install 3.12
uv python list
選び方フローチャート
- とりあえず動かしたい → pip + venv
- 自分用 Web アプリ → pip + venv + requirements.txt
- チーム開発 / ロック厳密 → poetry
- ライブラリを PyPI 公開 → poetry
- 機械学習・GPU 系 → conda(CUDA バイナリも一括)
- CI / Docker の高速化 → uv
FAQ
Q: pip install で root 権限がいる
A: グローバルに入れようとしている。必ず venv 内で実行する。OS の Python を汚すと OS パッケージが壊れる。
Q: pip と pip3 どちらを使う?
A: venv 内なら pip。グローバル状態で曖昧なときは python -m pip が一番安全。
Q: requirements.txt と pyproject.toml の関係
A: PEP 621 で pyproject.toml が標準。新規プロジェクトは poetry / uv で pyproject に統一。レガシーは requirements.txt のまま。
同階層のページ
- Python本体・ライブラリのインストール
- Anaconda
- 統合開発環境の導入
- 仮想環境の構築
- 仮想環境の構築(WIndows)
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38