0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PythonAdvent Calendar 2024

Day 21

【Pixi】新世代のCondaパッケージマネージャー

Last updated at Posted at 2024-12-22
1 / 15

私個人の話で恐縮ですが、「ギークハウス新宿」というエンジニア中心のシェアハウスの運営に関わっています。

勉強会・懇親会等のイベントを開催しております。内見等興味ある方はお気軽にこちらまでご連絡ください。

🚀 Pixi:新世代のCondaパッケージマネージャ

pixiくん

この記事では最近出てきたCondaパッケージの新星パッケージマネージャーであるPixiを紹介します.


Condaパッケージについて

はじめに,Condaパッケージを使うメリットとCondaパッケージに関するよくある誤解の2点について説明します.


Condaパッケージを使うメリット

Condaとは、オープンソースのパッケージ管理システムおよび環境管理システムです.Pythonの標準パッケージマネージャーのPipの代替としてデータサイエンス分野を中心に広く使われているということはQiitaの読者の皆さんならご存知の方も多いでしょう.

Condaの主な利点は以下の通りです:

  1. クロスプラットフォーム対応(Windows、macOS、Linux)で一貫した環境を構築できる
  2. 異なるバージョンの言語やライブラリを含む独立した環境を作成・管理できる
  3. 依存関係を自動的に解決し、バイナリパッケージを提供することで、インストールが容易

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 で実装された高速かつ安全な設計
    • モダンな開発ワークフローをサポート
      • サブコマンドがryeuvと似ている(pixi add, pixi run
  • 特徴
    • 軽量かつ依存関係解決が高速
    • pyproject.toml をネイティブにサポート
    • 仮想環境を意識せずに直接プロジェクトを管理可能

🔥 Pixiを使うことの利点

    • 従来の問題点:
    • 仮想環境(venv)の管理が面倒
    • pipconda の依存関係解決に時間がかかる
      • condaのC++実装のmambamicromambaは速い
    • 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で管理してみるといいと思います.

  1. 公式ドキュメントを読む
  2. 使ってみよう
    • 簡単なプロジェクトで始めると⭕️

最後に

PixiはPipの代替であるryeやuvと同様にRustで実装されており,処理がPythonで実装されたCondaと比べて圧倒的に高速です.

特にpixi global installでユーザーレベルでのグローバルインストールが可能な点が個人的にとても気に入っています.

これにより,condaのようにgitやgccなどのコマンドラインツールとして利用するパッケージを環境ごとに分ける必要がなくなり利便性が高まりました.

プロジェクトがPyPIに登録されているPythonパッケージのみで足りる場合はuvやryeで十分ですが,

  • Pythonパッケージ以外もプロジェクト単位で管理したい
  • 管理者権限を持っていないが,使用したいパッケージがある
  • Conda環境をryeやuvのようなコマンド体系で扱いたい

といった場合はPixiを使ってみてはいかがでしょうか?

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?