私個人の話で恐縮ですが、「ギークハウス新宿」というエンジニア中心のシェアハウスの運営に関わっています。
勉強会・懇親会等のイベントを開催しております。内見等興味ある方はお気軽にこちらまでご連絡ください。
🚀 Pixi:新世代のCondaパッケージマネージャ
この記事では最近出てきたCondaパッケージの新星パッケージマネージャーであるPixiを紹介します.
Condaパッケージについて
はじめに,Condaパッケージを使うメリットとCondaパッケージに関するよくある誤解の2点について説明します.
Condaパッケージを使うメリット
Condaとは、オープンソースのパッケージ管理システムおよび環境管理システムです.Pythonの標準パッケージマネージャーのPipの代替としてデータサイエンス分野を中心に広く使われているということはQiitaの読者の皆さんならご存知の方も多いでしょう.
Condaの主な利点は以下の通りです:
- クロスプラットフォーム対応(Windows、macOS、Linux)で一貫した環境を構築できる
- 異なるバージョンの言語やライブラリを含む独立した環境を作成・管理できる
- 依存関係を自動的に解決し、バイナリパッケージを提供することで、インストールが容易
Condaパッケージに関するよくある誤解
先述の通り,CondaパッケージはPipでPyPIからインストール可能なパッケージをcondaパッケージマネージャーでインストールする際に使うものとして認識されていると思います.
しかし実のところ,CondaはPythonのパッケージだけでなく、さまざまなプログラミング言語やツールに対応しており,Pipでは簡単にインストールすることができないパッケージもインストール可能です.実際に、以下のようなものをCondaで管理できます:
- データサイエンス関連のR言語パッケージ
- C/C++のコンパイラやライブラリ
- Javaの開発環境
- 機械学習フレームワーク(TensorFlow、PyTorchなど)とそれらの依存関係
- 科学計算用のライブラリ(BLAS、LAPACK、MKLなど)
「CondaはPythonパッケージにしか対応していない」という誤解が生まれた理由の1つは,
Anacondaディストリビューションが主にPythonのデータサイエンス環境として知られているためです。しかし,実際にはCondaはより汎用的なパッケージ管理システムとして設計されています.
プロジェクトの要件に応じて,特定の言語やツールのバージョンを柔軟に組み合わせた環境を構築できることがCondaパッケージの大きな強みと言えます.
💡 Pixiとは?
ここから今回の記事の主題であるPixiについて説明します.
-
Pixi: Condaパッケージマネージャー
- Rust で実装された高速かつ安全な設計
- モダンな開発ワークフローをサポート
- サブコマンドが
rye
やuv
と似ている(pixi add
,pixi run
)
- サブコマンドが
-
特徴
- 軽量かつ依存関係解決が高速
-
pyproject.toml
をネイティブにサポート - 仮想環境を意識せずに直接プロジェクトを管理可能
🔥 Pixiを使うことの利点
-
- 従来の問題点:
- 仮想環境(
venv
)の管理が面倒 -
pip
やconda
の依存関係解決に時間がかかる-
conda
のC++実装のmamba
やmicromamba
は速い
-
-
pip
だとグローバル環境を汚染しやすい -
conda
だと環境を切り分けられるがグローバルに必要なパッケージを環境ごとにインストールする必要がある-
condax
を使うという手はある
-
-
Pixi の解決策:
- プロジェクトごとに環境を完全に分離
- インストールが高速(Rust のおかげ!)
-
標準化された設定ファイル (
pixi.toml
)
📋 Pixiの基本的な使い方
Pixiの基本的な使い方を説明します.
1️⃣ インストール
# UNIX系
curl -sSL https://install.pixi.dev | bash
# Conda
conda install pixi -c conda-forge
# Homebrew
brew install pixi
2️⃣ プロジェクトを始める
pixi init
pixi add <パッケージ名>
# プログラムを実行
pixi run python
# もしくは明示的に仮想環境に入ってプログラムを実行
pixi shell
python
3️⃣ パッケージのインストール
# プロジェクトにインストール(その環境だけで使える)
pixi add python==3.13 numpy pandas polars
# グローバルインストール(ユーザーレベルですべての環境で使えるようになる)
pixi global install ruby rust julia git
🛠️ Pixiをタスクランナーとして使う
-
タスクランナー機能:
-
pixi task add <タスク名>
でタスクを定義 -
pixi run <タスク名 or コマンド名>
でタスク/コマンドを実行
-
🚀 Pixi の強み:従来ツールとの比較
従来ツールと比較するとこんな感じです.
ツール | Pixi | pip | conda |
---|---|---|---|
速度 | 🚀 高速 | 🐢 遅い | 🐢 遅い |
安全性 | 👍 高い | 😐 普通 | 👍 高い |
依存解決 | 🎯 正確 | 😐 微妙 | 🎯 正確 |
セットアップ | 簡単 | 簡単 | やや複雑 |
👣 次のステップ
Pixiの使い方がある程度分かってきたら,公式ドキュメントを読みながら実際にプロジェクトをPixiで管理してみるといいと思います.
- 公式ドキュメントを読む
-
使ってみよう
- 簡単なプロジェクトで始めると⭕️
最後に
PixiはPipの代替であるryeやuvと同様にRustで実装されており,処理がPythonで実装されたCondaと比べて圧倒的に高速です.
特にpixi global install
でユーザーレベルでのグローバルインストールが可能な点が個人的にとても気に入っています.
これにより,condaのようにgitやgccなどのコマンドラインツールとして利用するパッケージを環境ごとに分ける必要がなくなり利便性が高まりました.
プロジェクトがPyPIに登録されているPythonパッケージのみで足りる場合はuvやryeで十分ですが,
- Pythonパッケージ以外もプロジェクト単位で管理したい
- 管理者権限を持っていないが,使用したいパッケージがある
- Conda環境をryeやuvのようなコマンド体系で扱いたい
といった場合はPixiを使ってみてはいかがでしょうか?