Bioconda のインストールに pixi を使うと何がいいのか調べて試してみた

Bioconda のインストールに pixi を使うと何がいいのか調べて試してみた

Bioconda のツールを入れるなら pixi が良いと聞いたので、実際に調べて試してみました。uv のような使い勝手で conda パッケージを扱えるという pixi について、conda や mamba との比較を交えながら紹介します。
2026.09.24

はじめに

Bioconda のツールを入れるなら今は pixi が良いと聞いたので、調べて試してみました。

pixi とは

pixi は prefix.dev が開発しているパッケージマネージャーで、Rust で書かれています。conda のエコシステムの上に作られていて、conda-forge や bioconda のチャンネルからパッケージを入れられます。インストールしたパッケージ一式(環境)は、ワークスペースと呼ぶディレクトリ単位で管理されます。conda では conda create -n <名前> で名前付きの環境を作り、使うたびに conda activate で切り替えていたやつです。

https://github.com/prefix-dev/pixi

Bioconda 公式ドキュメントでは pixi 推し

Bioconda 公式ドキュメントでは pixi の手順が conda より先に載っており、conda パッケージと環境を扱うフロントエンドとして紹介されています。

Pixi is a modern, extremely fast, frontend for conda packages and environments.

出典: Usage — Bioconda documentation

なにが嬉しいのか

ワークスペースのディレクトリで pixi run と実行すれば、conda activate を挟まずにその環境でコマンドを実行できます。

私は普段 Python では uv を使っています。uv は Astral が開発するパッケージマネージャーで、pip や virtualenv の代わりに Python のパッケージとプロジェクトを管理できます。conda activate を挟まずに実行でき、実行前に実行環境を整えるのは、uv の uv run と同じでした。

When using run, uv will ensure that the project environment is up-to-date before running the given command.

出典: Running commands | uv

では uv と何が違うのか、気になって確認しました。

結論としては、uv の使い勝手のまま conda のパッケージを扱うなら、pixi を使うと良いです。

uv は既定では PyPI からパッケージを入れ、conda-forge や bioconda のチャンネルは使えません。uv の GitHub には conda 対応を求める Issue が 2024 年に立ち、2026 年 9 月 23 日時点でもオープンのままでした。メンテナーは対象外になりそうだと答え、conda との統合には prefix.dev が注力していると案内しています。

This might be out of scope for us. I'm not sure about the long-term future, but definitely in the short term. Prefix.dev is more focused on conda integration.

出典: Add support for managing Conda environments and packages · Issue #1703 · astral-sh/uv

今回使った 5 つのツールが PyPI にあるかを確認しました。samtools、bowtie2、seqkit、fastqc はありませんでした。PyPI にあったのは multiqc だけです。

pixi はパッケージを conda と PyPI のどちらから入れるかはパッケージを追加するときに決めます。pixi add は conda のパッケージ、pixi add --pypi は PyPI のパッケージとして追加します。pixi は conda のパッケージの依存関係を先に解決し、使う Python のバージョンなどを決めます。そのあとで PyPI のパッケージとその依存を解決します。この PyPI のパッケージの依存関係を解決しているのが pixi に組み込まれた uv です。なんだかんだ、ここにも uv がいました。

Pixi can install packages from both ecosystems, but it uses a conda-first approach.

出典: Conda pypi - Pixi

conda より mamba が速いという話はどこへいった?

conda より mamba のほうが速い、と以前はよく聞きました。いまはどうなのか気になって調べました。mamba は conda を C++ で作り直したパッケージマネージャーで、依存関係の解決に libmamba を使います。

conda も 23.10.0 で、既定のソルバーを conda-libmamba-solver に切り替えていました。このソルバーは mamba と同じ libmamba を使います。conda 公式のアナウンスでは、切り替えの目的を高速化と精度の向上だと説明しています。

In short: to make conda faster and more accurate.

出典: Conda 23.10.0: libmamba is now the default solver | conda.org

conda も mamba と同じ libmamba で依存関係を解決します。なるほど、3 年ほど前に依存関係の解決だけ見れば差がなくなっていました。

pixi を入れてワークスペースを作る

ではさっそく pixi を試してみます。インストールから Bioconda のツールを動かすところまで順に進めます。

pixi をインストールする

公式のインストールスクリプトを実行します。

curl -fsSL https://pixi.sh/install.sh | sh

チャンネルを指定して初期化する

pixi init に渡したチャンネルは、渡した順序で pixi.toml に書き込まれます。Bioconda 公式の案内に合わせ、conda-forge を先、bioconda を後ろに指定します。最後の ws_pixi はワークスペースを作るディレクトリです。ディレクトリはこのコマンドで作られ、その名前がワークスペース名にもなります。

pixi init --channel conda-forge --channel bioconda ws_pixi
cd ws_pixi

ツールを追加する

pixi add に必要なパッケージを指定します。依存解決とインストールに加え、pixi.lock の生成までこのコマンドで一発です。

pixi add seqkit bowtie2 samtools fastqc multiqc

出力は追加したパッケージ 1 つにつき 1 行、全部で 5 行だけでした。

実行結果
 Added seqkit >=2.13.0,<3
 Added bowtie2 >=2.5.5,<3
 Added samtools >=1.24,<2
 Added fastqc >=0.12.1,<0.13
 Added multiqc >=1.35,<2

依存を含めて入ったパッケージは 157 個でした。一覧は pixi list で確認できます。

追加後に pixi.toml を確認してみます。

cat pixi.toml

指定したチャンネルと実行中のプラットフォーム、追加した 5 つの依存が入っています。pixi add はバージョンを指定しなくても >=2.13.0,<3 のように上限付きの範囲を書き込むため、次のメジャーバージョンには上がりません。

実行結果
[workspace]
channels = ["conda-forge", "bioconda"]
name = "ws_pixi"
platforms = ["linux-aarch64"]
version = "0.1.0"

[tasks]

[dependencies]
seqkit = ">=2.13.0,<3"
bowtie2 = ">=2.5.5,<3"
samtools = ">=1.24,<2"
fastqc = ">=0.12.1,<0.13"
multiqc = ">=1.35,<2"

追加したツールを実行する

ワークスペースのディレクトリで samtools のバージョンを表示します。pixi runconda activate にあたる操作を挟まずに、環境内のコマンドを起動します。

pixi run samtools --version
実行結果(抜粋)
samtools 1.24
Using htslib 1.24

conda、mamba、pixi で初回インストールの所要時間を比べてみた

pixi でのインストールが速いのか気になったので、conda、mamba と初回インストールの所要時間を比べてみました。EC2 の構築手順は省略します。Ubuntu の EC2 に Bioconda の実行環境を用意する手順は、以下の記事にまとめています。

https://dev.classmethod.jp/articles/introduction-to-bioconda/

conda と mamba は Miniforge3 で、pixi は公式のインストールスクリプトで入れました。

項目
インスタンスタイプ c9g.large
CPU Graviton 5
メモリ 4 GiB
OS Ubuntu 26.04.1 LTS
conda 26.7.2
mamba 2.9.0
pixi 0.81.0
計測日 2026/09/19

計測したのはキャッシュのない状態からの初回インストールだけです。conda、mamba、pixi を 3 回ずつ測る 1 巡を 2 回繰り返し、合計 18 回測りました。1 巡目は conda、mamba、pixi の順、2 巡目は逆順です。ネットワークの当たり外れが特定のツールへ偏らないようにするためです。チャンネルはどれも conda-forge を最優先、bioconda を次点にそろえました。conda と mamba では channel_prioritystrict にしています。

条件をそろえるため、1 回ごとにパッケージキャッシュも消しています。base 環境からリンクされているパッケージは conda clean -a の削除対象から外れ、パッケージキャッシュに残りますconda clean -a だけでは python などの共通パッケージのダウンロードが省かれてしまいます。そこで CONDA_PKGS_DIRS を計測用のディレクトリへ向け、毎回まるごと削除しました。

キャッシュは計測のたびに次のコマンドで消しました。pixi のキャッシュも同じタイミングで消しています。

export CONDA_PKGS_DIRS=/home/ubuntu/bench/pkgs_cache
conda clean -a -y
rm -rf "$CONDA_PKGS_DIRS"
pixi clean cache --yes
rm -rf ~/.cache/rattler ~/.cache/pixi

所要時間を測ったのは次のパッケージのインストールです。基本的なものをピックアップしたつもりです。pixi は pixi init で作ったワークスペースの中で pixi add を実行しています。

conda create -y -n bench_conda seqkit bowtie2 samtools fastqc multiqc
mamba create -y -n bench_mamba seqkit bowtie2 samtools fastqc multiqc
pixi add seqkit bowtie2 samtools fastqc multiqc

pixi は速かった

6 回分の中央値、最小、最大は次のとおりです。pixi 比は中央値どうしの比率です。

ツール 中央値(秒) 最小(秒) 最大(秒) pixi 比
pixi 19.5 17.8 20.6 1.0
conda 32.9 27.9 34.4 1.7
mamba 37.8 35.5 79.9 1.9

pixi はおよそ 20 秒で最も速く、ばらつきも最小でした。conda はおよそ 33 秒で pixi の 1.7 倍、mamba はおよそ 38 秒です。今回の計測では conda より mamba のほうが遅くなりました。

パッケージ数とバージョンは conda、mamba、pixi でほぼ同じだった

パッケージ数と環境サイズは次のとおりです。

ツール パッケージ数 環境サイズ
pixi 157 1.7 GiB
conda 158 1.8 GiB
mamba 157 1.8 GiB

インストールされたバージョンも conda、mamba、pixi の 3 つすべて一致していました。

今回の検証でインストールしたパッケージは AWS Graviton でも最新版が利用できた

Graviton で測ったので、linux-aarch64 での提供状況も調べました。対象は、計測で入れた seqkit、bowtie2、samtools、fastqc、multiqc の 5 つです。5 つとも、手に入る最新版は linux-64 と同じでした

提供状況は anaconda.org の API(https://api.anaconda.org/package/bioconda/<パッケージ名>)でプラットフォーム別に確認しました。

パッケージ linux-64 で手に入る最新版 linux-aarch64 で手に入る最新版
bowtie2 2.5.5 2.5.5
fastqc 0.12.1(noarch) 0.12.1(noarch)
multiqc 1.35(noarch) 1.35(noarch)
samtools 1.24 1.24
seqkit 2.13.0 2.13.0

最新版は linux-64 と同じでしたが、過去のバージョンは linux-aarch64 にないものがありました。論文の再現などでバージョンを指定する場合は、先に提供状況を確認してください。

まとめ

Bioconda のツール 5 つを pixi で入れ、conda と mamba の初回インストール時間と比べました。中央値は pixi がおよそ 20 秒、conda がおよそ 33 秒、mamba がおよそ 38 秒です。入るパッケージとバージョンは conda、mamba、pixi で変わりませんでした。5 つとも、linux-aarch64 で手に入る最新版は linux-64 と一致していました。

おわりに

pixi はなんなのか調べて試した内容をまとめました。ARM で検証したいことがあったので Graviton で処理する前提で良い環境構築方法を模索してみます。

参考

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事