Python パッケージングの環境マネージャー#

クイック意思決定ガイド

  • Python のみのプロジェクト、シンプルさが必要ですか? → venv + pip

  • Python のみ、速度が必要ですか? → uv (推奨)

  • CLI ツールをグローバルにインストールしますか? → pipx

  • conda パッケージまたは言語間の依存関係が必要ですか? → pixi (推奨) または conda/mamba

  • Python パッケージを作成しますか? → Hatch を使用します -- 依存関係マネージャーとして UV を使用します

ツールを組み合わせることができます!たとえば、pipx を使用して、Hatch、ruff、または pre-commit などのよく使用するツール (コマンド ラインで) をインストールし、プロジェクト内で uv を使用してパッケージと環境を管理します。

環境およびパッケージマネージャー#

パッケージおよび環境マネージャーは、Python パッケージ化ワークフローにおける重要なツールです。 2 つの違いを理解すると、ツールを選択する際のパッケージング エクスペリエンスが容易になります。

  1. パッケージ マネージャーは、環境内の Python パッケージ (ライブラリとツール) とその依存関係をインストール、更新、削除するために使用されます。パッケージ マネージャーを使用する場合、多くの場合、PyPI (Python Package Index) などのリポジトリ、または GitHub / GitLab などのローカル リポジトリからパッケージをダウンロードします。

注釈

pip install numpy を実行すると、pip はパッケージ マネージャーとして機能し、PyPI から numpy をインストールします。パッケージをインストールするときの Pip のデフォルトのリポジトリは PyPI ですが、GitHub などの他のリポジトリからパッケージをインストールするために使用できます。

  1. 環境マネージャーは、Python プロジェクト用に隔離されたスペース (環境) を作成します。各環境には独自の Python インストールと独自のインストール済みパッケージがあります。異なるプロジェクトに分離された環境を使用すると、異なる依存関係を持つ異なるプロジェクト間で同じ環境を使用する場合に、環境変更の競合が軽減されます。

以下にリストされているツールはたくさんありますが、時間がない場合は、次のツールを検討するとよいでしょう。

  1. Python パッケージを管理している場合は、ハッチングを UV と組み合わせます。 このワークフローの詳細については、チュートリアルを確認してください。

  2. 非 Pure Python パッケージング領域で作業している場合は、conda のより高速な代替手段として Pixi または mamba を使用します。

環境マネージャーが環境を保存する場所#

環境マネージャーは、デフォルトで環境を別の場所に保存します。たとえば、Python に同梱されている環境マネージャーである「venv」は、デフォルトで現在の作業ディレクトリに環境を保存します。 UV にも同じネイティブ動作があります。対照的に、conda と mamba は環境をグローバルな場所に保存するため、プロジェクト間で簡単にアクセスできます。

Tip

UV には、デフォルトの動作が現在の作業ディレクトリに環境を作成することであっても、グローバル キャッシュがあります。

一部のツールはすべてを実行します#

最新のツールの中には、パッケージのインストールと環境管理の両方を処理するものもあります。たとえば、UV、conda、mamba は、環境の作成、依存関係の追加、ツールの構築とインストールの両方に使用できます。

比較表: pip エコシステム#

道具

タイプ

言語

スピード

デフォルトの環境の場所

説明

ピッ

パッケージマネージャー

パイソン

もっとゆっくり

該当なし (既存の環境を使用)

Pythonの標準パッケージインストーラー。 pip はパッケージもビルドします

pipx

パッケージマネージャー

パイソン

もっとゆっくり

グローバル (ツールごとに分離)

nox、pytest、ruff などのプロジェクト間で定期的に使用する必要があるツールをグローバルな場所にインストールします

紫外線

両方

さび

最速

現在の作業ディレクトリ

高速パッケージインストーラーおよび環境クリエーター

ヴェンヴ

環境管理者

パイソン

もっとゆっくり

現在の作業ディレクトリ

Pythonの組み込み環境作成者

仮想環境

環境管理者

パイソン

適度

現在の作業ディレクトリ

venv に代わる機能が豊富な代替ツール

比較表: conda エコシステム#

道具

タイプ

言語

スピード

デフォルトの環境の場所

説明

コンダ

両方

Python/C++

もっとゆっくり

グローバル (~/anaconda3/envs/)

クロス言語パッケージおよび環境マネージャー

マンバ

両方

C++

もっと早く

グローバル (~/anaconda3/envs/)

conda のより迅速なドロップイン置換

ピクシー

両方

さび

最速

現在の作業ディレクトリ (.pixi/)

ロックファイルを備えた最新の conda ベースのツール

Tip

速度の比較: Rust ベースのツール (uv、pixi) は、パッケージのインストールや複雑な環境の解決において、Python ベースのツールよりも大幅に高速です。 Mamba は conda より高速ですが、Pixi などの Rust ベースの代替手段よりは遅い可能性があります。

パッケージマネージャー#

ピップ#

  • Pip は Python の標準パッケージ インストーラーです。 Python にはデフォルトで含まれています。

  • Pip は、PyPI および GitHub / GitLab から既存の環境にパッケージをインストールするのに最適です。

  • パッケージを編集可能モードでローカルにインストールする場合の開発にも最適です。

基本的な使用方法:

pip install numpy
pip install -e .  # Install your package in editable mode

pipx#

  • Pipx を使用すると、プロジェクト間で使用する必要があるツール (riff、pytest、sphinx、nox など) をグローバルにインストールできます。

使用する理由: マシンに同じツールを何度も再インストールすることを避けるために使用できます。

基本的な使用方法:

pipx install black
pipx install hatch

コンダ / マンバ#

Conda は、Python パッケージ、R パッケージ、システム ライブラリなどをインストールするクロス言語パッケージ マネージャーです。 Mamba は、conda のより高速なドロップイン代替品であり、まだ conda を使用している場合は、conda よりも mamba を強くお勧めします。

これらのツールは、Python 以外の依存関係 (C ライブラリ、GDAL、R パッケージなど) を必要とする科学技術コンピューティング プロジェクトや環境に最適です。

基本的な使用方法:

# conda
conda install numpy

# mamba (faster/preferred alternative)
mamba install numpy

注釈

Conda と mamba は環境マネージャーとしても機能します - 以下を参照してください。

環境管理者#

純粋な Python パッケージング用のハッチ#

pyOpenSci の推奨事項

Python パッケージ化のための完全なプロジェクト管理ツールとして hatch をお勧めします。 Hatch は、環境の管理、パッケージの構築、テストの実行、公開の処理をすべて 1 つのツールで行います。 uv をバックエンドとして使用して、さらに高速な操作を実現できます。

Hatch は、環境、パッケージの構築、テスト、公開を処理する包括的な最新の Python プロジェクト マネージャーです。 Hatch は、さまざまなタスク (テスト、ドキュメント、開発) 用に分離された環境を作成します。 Hatch は内部で UV を使用して Python をインストールし、UV を使用して環境のインストールを管理するように設定することもできます。

Hatch は、開発から公開までのパッケージ化ワークフロー全体を処理するオールインワン ツールを必要とする Python パッケージ開発者に最適です。

チュートリアルをチェックしてください

基本的な使用方法:

# Create a new project (using the pyOpenSci template (requires that you install copier)
copier copy gh:pyopensci/pyos-package-template .

# or with hatch
hatch new my-project

# Run tests in an isolated environment using the pyOpenSci template
hatch run tests:run

# Build your package using a Hatch environment and our template
hatch run build:check
# Configure hatch to use uv (in pyproject.toml or hatch.toml)
# [tool.hatch.envs.default]
# installer = "uv"

注釈

Hatch はタスク ランナーとして機能し、定義した複数の環境を管理できます。また、プロジェクトと依存関係のインストールも処理するため、開発タスク間で一貫性を求めるパッケージ管理者にとって理想的です。

ベンヴ#

venv は、Python の組み込み環境作成ツールです (Python 3.3 以降に含まれています)。これは、単純な純粋な Python プロジェクトに最適です。 venv は Python に同梱されており、Hatch、UV、その他のツールによって内部的に使用されるため、最も広く使用されているツールです。

基本的な使い方:

# Create environment
python -m venv .venv

# Activate (Mac/Linux)
source .venv/bin/activate

# Activate (Windows)
.venv\Scripts\activate

# Install packages
pip install numpy

仮想環境#

virtualenv は、より優れたパフォーマンスと追加のオプションを備えた、venv のより機能豊富な代替品です。環境をより詳細に制御する必要がある場合に最適です。

基本的な使用方法:

# Install virtualenv first
pip install virtualenv

# Create environment
virtualenv .venv

# Activate (same as venv)
source .venv/bin/activate

紫外線#

pyOpenSci の推奨事項

高速で信頼性の高い Python パッケージと環境管理には uv をお勧めします。 pip よりも大幅に高速で、パッケージのインストールと環境の作成の両方を簡単に処理できます。

UV は、pip と venv の両方を置き換える高速な Rust ベースのツールです。パッケージをインストールし、仮想環境を超高速で作成します。 UV は純粋な Python プロジェクトに最適です。非純粋な Python パッケージング領域で作業する場合は、Pixi の方が適しています。

基本的な使用方法:

# Add a dependency to your project with uv add (will add to the pyproject.toml file)
> uv add numpy

# Create environment and run python with your dependencies installed
# UV will also install your package in editable mode
> uv run python
# Create environment
python -m venv .venv
source .venv/bin/activate

# Install packages
pip install numpy

# Install your package in editable mode with your dev dependency group
pip install -e ".[dev]"
# Initialize project (creates environment automatically)
pixi init

# Add packages
pixi add numpy

# Install your package in dev mode
pixi add --pypi --editable "package-name[dev] @ file:///absolute/path/to/package"

conda / mamba (環境マネージャーとして)#

Conda と mamba は、Python、R、システム ライブラリなどを含めることができる分離環境を作成します。 conda エコシステム ツールは、言語間の複雑な依存関係を管理する場合、または特定のシステム ライブラリが必要な場合に最適です。

基本的な使用方法:

# Create environment with conda
conda create -n myenv python=3.11
conda activate myenv

# Or with mamba (faster)
mamba create -n myenv python=3.11
mamba activate myenv

ピクシー#

pyOpenSci の推奨事項

conda パッケージが必要なプロジェクトの場合は、conda/mamba ではなく pixi をお勧めします。より高速で、再現性のためにロック ファイルを使用し、クロスプラットフォームで動作します。

Pixi は、conda エコシステム上に構築された最新の高速パッケージおよび環境マネージャーです。 UV と同様に、Pixi は再現可能な環境にロック ファイルを使用します。 Pixi は、conda パッケージを必要とする科学プロジェクト、正確な再現性を必要とするチーム、またはクロスプラットフォーム開発に最適です。

基本的な使用方法:

# Initialize new project
pixi init

# Add Python packages
pixi add numpy pandas

# Add conda packages (like GDAL)
pixi add gdal

# Run commands in the environment
pixi run python script.py

# Activate environment in an interactive shell
pixi shell

注釈

Pixi はロック ファイル (pixi.lock) を自動的に作成し、チームの全員が同一の環境を利用できるようにします。