6.

conda コマンド一覧|環境の作成・切り替え・共有とpip併用の注意

編集
この記事の要点
  • conda は Anaconda / Miniconda に付属するパッケージ管理+仮想環境管理のコマンド
  • 覚えるのは create / activate / install / list / env export の 5 つでほぼ足りる
  • pip との併用は最小限に。conda で入るものは conda、無いものだけ pip、が事故を減らす鉄則
  • 環境の共有は conda env exportconda env create -f の 2 コマンド
  • ディスクが膨らんだら conda clean --all でキャッシュを削除する

conda コマンドとは

conda は Anaconda / Miniconda に同梱されているコマンドで、2 つの役割を兼ねています。

  • パッケージ管理: Python ライブラリだけでなく、C/C++ で書かれた数値計算ライブラリや、Python 本体そのもののバージョンも管理できる
  • 仮想環境管理: プロジェクトごとに独立した環境を作り、ライブラリのバージョン衝突を避ける

pip が「Python パッケージだけ」を扱うのに対し、conda はその下にある依存ライブラリまで含めて面倒を見ます。NumPy や SciPy のように内部でネイティブライブラリを使うものが、ビルドなしで入るのはこのためです。

コマンドを打つ場所は、Windows なら Anaconda Prompt です。通常のコマンドプロンプトでは conda にパスが通っていないことがあります。

まず覚える 5 つ

# ① 環境を作る(Python のバージョンも指定できる)
conda create -n myenv python=3.11

# ② 環境に入る / 出る
conda activate myenv
conda deactivate

# ③ パッケージを入れる
conda install numpy pandas
conda install -c conda-forge scikit-learn    # チャネル指定

# ④ 何が入っているか見る
conda list
conda env list                                # 環境の一覧

# ⑤ 環境を書き出す / 復元する
conda env export > environment.yml
conda env create -f environment.yml

この 5 つが回せれば、日常の作業はほぼ困りません。

よく使うコマンド一覧

目的コマンド
環境を作るconda create -n 名前 python=3.11
環境に入るconda activate 名前
環境から出るconda deactivate
環境の一覧conda env list または conda info -e
環境を消すconda remove -n 名前 --all
パッケージを入れるconda install パッケージ名
バージョン指定で入れるconda install numpy=1.26
パッケージを消すconda remove パッケージ名
更新するconda update パッケージ名 / conda update --all
入っているものを見るconda list
探すconda search パッケージ名
環境を書き出すconda env export
環境を復元するconda env create -f environment.yml
キャッシュを消すconda clean --all
conda 自体を更新conda update -n base conda

チャネル(配布元)の考え方

conda はパッケージをチャネルと呼ばれるリポジトリから取得します。標準は Anaconda 社の defaults、コミュニティ運営で品揃えが多いのが conda-forge です。

# 一度だけ conda-forge から入れる
conda install -c conda-forge パッケージ名

# この環境では常に conda-forge を優先する
conda config --env --add channels conda-forge
conda config --env --set channel_priority strict

# 現在の設定を確認
conda config --show channels

複数チャネルを混ぜると依存解決が壊れやすくなりますchannel_priority strict を設定して優先順位を固定しておくと、解決に何分もかかったり、途中で失敗したりする事態を減らせます。

pip との併用で事故らないために

conda 環境の中で pip を使うこと自体はできますが、両方が同じパッケージを別々に管理し始めると壊れます。conda はファイルの所有者を把握していますが、pip が上書きしたファイルまでは追えないためです。

やること理由
conda で入るものは conda で入れる依存を conda が一元管理できる
conda に無いものだけ pipやむを得ない場合の逃げ道
conda を先に、pip を後に順序を逆にすると conda が pip 版を上書きする
同じパッケージを両方で入れない二重管理になり、どちらが有効か分からなくなる
壊れたら環境を作り直す修復より作り直しのほうが速い

環境を作り直す前提で運用するなら、environment.yml を必ず残しておいてください。作り直しが数分で済みます。

環境の共有と再現

# 完全な状態を書き出す(OS 依存のビルド番号まで含む)
conda env export > environment.yml

# OS をまたいで使うなら --from-history が扱いやすい
# (自分が明示的に install したものだけを書き出す)
conda env export --from-history > environment.yml

# 復元
conda env create -f environment.yml

# 既存の環境に反映(差分更新)
conda env update -f environment.yml --prune

素の conda env export は、そのマシンで解決された正確なビルドまで記録するため、別 OS では復元に失敗しがちです。Windows で作った yml を Linux で使うなら --from-history を選んでください。

ディスクを食い始めたら

# 何がどれだけ使っているか
conda env list
du -sh ~/anaconda3/envs/*          # Linux / macOS

# ダウンロード済みパッケージとキャッシュを削除
conda clean --all

# 使っていない環境を消す
conda remove -n 古い環境名 --all

conda は環境ごとにパッケージの実体を持つため、環境を増やすほどディスクを使います。conda clean --all環境そのものには影響しないので、まずこれを試してください。

FAQ

Q: conda activate が「CommandNotFoundError」になります
A: シェルの初期化がされていません。conda init bash(使っているシェル名)を実行し、ターミナルを開き直してください。Windows は Anaconda Prompt を使うのが確実です。

Q: conda install が終わりません
A: 依存解決に時間がかかっています。チャネルを絞る(channel_priority strict)、Python のバージョンを明示する、新しい環境を作ってから入れる、のいずれかで改善します。

Q: base 環境に直接インストールしていいですか?
A: 避けてください。base が壊れると conda 自体が動かなくなります。用途ごとに環境を作るのが基本です。

Q: Anaconda と Miniconda のどちらを使うべきですか?
A: 最初から大量のライブラリが要るなら Anaconda、必要なものだけ入れたいなら Miniconda です。conda コマンドの使い方はどちらも同じです。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. インストール方法(Windows)
  2. インストール方法(Linux)
  3. ANACONDA NAVIGATOR
  4. Anaconda Promptの起動
  5. 仮想環境の構築(Anaconda経由)
  6. condaコマンド