23 人が閲覧(直近 30 日) Python

pipとcondaの違いと使い分け|混ぜると壊れる理由とAnaconda・Miniforgeの選び方

pipとcondaの違いと使い分け|混ぜると壊れる理由とAnaconda・Miniforgeの選び方

pipとcondaはどちらも「Pythonのライブラリを入れる道具」に見えますが、扱える範囲と依存関係の直し方が違います。pipはPython公式のインストーラで、PyPIからPythonパッケージを入れます。condaはPythonの外側にあるC/C++ライブラリやPython本体まで含めて、環境ごと管理します。この記事では、2026年10月時点の版(conda 26.9.3・pip 26.2.1)を前提に、両者の違い、混ぜたときに実際に何が起きるか、Anaconda・Miniconda・Miniforgeの選び方、関連会社を含め従業員・請負人が200人を超える営利組織で有料になる商用ライセンスまでを、検証環境で実行した結果とあわせて解説します。

まとめ:データ分析はconda、それ以外はpip。混ぜるならcondaが先

NumPy・SciPy・GPU版の機械学習ライブラリなど、ネイティブ依存の重い環境を作るならcondaを選びます。Webアプリやスクリプトのように純粋なPythonパッケージで足りるなら、pip(venvやuvと組み合わせる)で十分です。uvはpipより1桁速く、検証ではNumPy・pandas・SciPyの導入が4.7秒で終わりました。

両方を1つの環境で使うなら、condaで入れられるものを先に全部入れ、最後にpipを使います。逆順にすると、pipで入れた版の上にcondaが別の版を重ねて書き込み、conda listの表示と実際に読み込まれる版が食い違います(後述の実測)。商用ではAnacondaの公式チャネル(defaults)を200人超の組織で使うと有料ライセンスが必要です。費用をかけずに使い続けたいなら、conda-forgeを既定にしたMiniforgeを選びます。

pip・conda・Anacondaの関係

3つは同じ階層の道具ではありません。pipは「インストーラ」、condaは「パッケージと環境のマネージャ」、Anacondaは「condaに数百のライブラリを同梱した配布物」です。「conda anaconda 違い」で迷う人が多いのは、Anacondaを入れるとcondaも一緒に入るためです。

pipとPyPI:Python公式のインストーラ

pipはPython本体に同梱されるインストーラで、PyPI(Python Package Index)からパッケージを取得します。PyPIのトップページには2026年10月時点で約92万のプロジェクトが登録されていると表示されています。最新版はpip 26.2.1(2026年8月4日公開・Python 3.10以上)です。扱えるのはPythonのパッケージで、C拡張を含むものはビルド済みのwheelで配布されていれば導入でき、wheelが無ければ手元でコンパイルが走ります。

condaとチャネル:defaultsとconda-forge

condaはパッケージの取得元をチャネルと呼びます。主なチャネルはAnaconda社が運営するdefaults(repo.anaconda.com)と、コミュニティが運営するconda-forgeの2つです。conda-forgeは公式集計で3万4千を超えるパッケージを配布しており、商用でも無料で使えます。condaのパッケージはPythonに限らず、OpenBLASやlibjpeg、Rやコンパイラまでビルド済みバイナリで配布されます。

Anaconda・Miniconda・Miniforgeの違い

condaを手に入れる配布物は主に3つです。どれを入れてもcondaコマンドは同じで、違いは同梱物と既定のチャネルにあります。容量は2026年10月時点の公式配布ページから取りました。

配布物 最新版 既定チャネル インストーラ容量 向く用途
Anaconda Distribution 2026.07-1 defaults Windows 1.0GB GUIですぐ分析を始める
Miniconda 26.9.3-0 defaults Windows 152.6MB 構成を自分で選ぶ
Miniforge 26.7.2-0 conda-forge Windows 141.4MB 商用で無料を保つ

Anaconda Distribution 2026.07-1はPython 3.14.6とNavigator・Spyder・Jupyterなどを同梱し、Linux版インストーラは1.1GBあります。Miniconda 26.9.3-0はcondaとPython 3.14.8など最小限だけです。Miniforgeはconda-forgeが配布し、高速なmambaも同梱します。以前あったMambaforgeは2023年にMiniforgeと中身が同じになり、2025年1月以降の新リリースからインストーラが廃止されました。いまMambaforgeを案内している手順書は古いと判断して構いません。

pipとcondaの違いを比較表で整理

観点 pip conda
取得元 PyPI defaults / conda-forge
扱う範囲 Pythonパッケージ Python本体・C/C++・Rも
依存解決 要求同士は解く 環境全体を解き直す
既存パッケージとの矛盾 警告だけで入れる 他も上げ下げして揃える
仮想環境 venv・uvが別途必要 conda単体で作れる
Pythonの版の切替 pyenv・uvが必要 環境ごとに指定できる
費用 無料 defaultsは200人超で有料

扱える範囲:C/C++ライブラリまで入るか

condaはPythonの外側の依存もパッケージとして扱います。たとえばconda-forgeのNumPyは線形代数ライブラリ(BLAS)を別パッケージとして一緒に入れます。検証環境(Intel Mac)でnumpy.show_config()を見ると、conda版はconda-forgeのOpenBLAS 0.3.34(libblas 3.11.0)を、PyPIのwheel版はmacOS標準のAccelerateを使っていました。どちらでも動きますが、GDAL・PostgreSQLクライアント・CUDA周りのようにwheelが揃っていない、あるいはシステム側のライブラリと版を合わせる必要があるものは、condaの方が手元のビルド環境を用意せずに済みます。

依存解決:pipも解くが、入っている物は見直さない

「pipは依存関係をチェックしない」と説明されることがありますが、これは2020年のpip 20.3より前の話です。現在のpipには依存リゾルバがあり、一度に指定したパッケージ同士が矛盾すると止まります。pip 26.2.1でscipy==1.18.1とnumpy<2を同時に指定すると、次のエラー(抜粋)でインストールしません。

ERROR: Cannot install numpy<2 and scipy==1.18.1 because these package versions have conflicting dependencies.
ERROR: ResolutionImpossible

違いが出るのは「既に入っているパッケージ」との矛盾です。SciPy 1.18.1が入った環境でpip install numpy==1.26.4を実行すると、pipは警告を出したうえでNumPyを下げてしまいます。SciPyは壊れたまま残ります。importすると「NumPy 2.0以上が必要」という警告が出て、scipy.statsやscipy.sparseは「module ‘numpy’ has no attribute ‘long’」で読み込めませんでした。

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
scipy 1.18.1 requires numpy<2.8,>=2.0.0, but you have numpy 1.26.4 which is incompatible.

condaにnumpy=1.26(とpandas=3.0)を指定してdry-runすると、condaは環境全体を解き直し、NumPyを1.26.4へ下げると同時にSciPyも1.17.1へ下げる計画を出しました。依存の重いデータ分析環境でcondaが壊れにくいと言われる理由はここにあります。condaは2023年10月の23.10.0から高速なlibmambaソルバを既定にしており、「condaは解決が遅い」という評判も当時ほど当てはまりません。

仮想環境とPythonの版:conda単体かvenv+pyenvか

condaはconda create -n myenv python=3.12の1行で、Python本体ごと別の版の環境を作れます。pipには環境を作る機能がなく、標準ライブラリのvenvで環境を作り、Pythonの版を切り替えるにはpyenvやuvを使います。venv・コンテナ・仮想マシンで隔離の強さがどう違うかは仮想環境とは?venv・コンテナ・仮想マシンの違いと隔離レベルの選び方を実装者向けに解説で、pyenvの手順はpyenvでPythonのバージョンを切り替える手順|shimの仕組みとビルド失敗の対処で扱っています。

環境を作る速さと容量

Python 3.12にNumPy・pandas・SciPyを入れる環境を、NumPy・pandas・SciPyとPython本体がキャッシュに無い状態で、3通り作りました。入った版はどれもNumPy 2.5.4・pandas 3.0.6・SciPy 1.18.1です(Intel Mac・2026年10月18日。pipは25.0.1、uvは0.11.31。時間はパッケージ導入のみでvenv作成は含まず、回線速度で変わります)。

方法 所要時間 環境の容量
conda create(conda-forge) 53.2秒 365MB
venv+pip install 46.1秒 計測せず
uv venv+uv pip install 4.7秒 140MB

condaの時間にはPython本体のダウンロードも含まれ、uvは管理下のPythonを取得済みの状態で測っています。条件の差を差し引いても、純粋なPythonパッケージとwheelで足りる構成ならuvがpipの約10分の1の時間(4.7秒対46.1秒)で終わり、容量も半分以下でした。condaはパッケージのキャッシュ(pkgs)も別に持つため、ディスクを空けたいときはconda clean --allを使います。

pipとcondaを混ぜると何が起きるか:conda 26.7での実測

「混ぜるな危険」とよく言われますが、何が壊れるのかを書いた解説は多くありません。Miniforge 26.7.2-0(conda 26.7.2)で、conda環境の中でpipとcondaを逆順に使い、何が起きるかを確かめました。

pipで入れた版の上にcondaが別の版を書き込む

condaでNumPy 2.5.4入りの環境を作り、pipでnumpy==2.2.6に入れ替えました。この時点でconda listはNumPyを「2.2.6・チャネルpypi」と表示します。次に、NumPyに依存するscikit-learnをconda installしました。condaはpipのNumPyを自分の管理下とは見なさず、conda-forgeのNumPy 2.5.4を追加でインストールしました。

$ conda list numpy
numpy    2.2.6    pypi_0    pypi
$ python -c "import numpy; print(numpy.__version__)"
2.5.4
$ ls site-packages | grep numpy
numpy
numpy-2.2.6.dist-info
numpy-2.5.4.dist-info

結果は、メタデータが2組並び、conda listは2.2.6と表示するのに実際に読み込まれるのは2.5.4という状態でした。この環境をconda env exportで書き出すと、pip欄にnumpy==2.2.6が残ります。別のマシンで再現すると、元の環境とは違う版の組み合わせができあがります。

conda doctorとpip checkで検知する

この壊れ方はpip checkでは見つかりませんでした(「No broken requirements found.」)。pipから見れば依存は満たされているためです。一方、conda doctorは環境の不整合を指摘しました。

$ conda doctor -p ./sci
❌ The environment is not consistent.
❌ These packages are not installed by conda:
numpy 2.2.6

pipを使った環境では、pip checkとconda doctorの両方を流すのが確実です。conda 26系のconda env exportは、pipで入れたパッケージがあると「Conda cannot reliably lock these packages」という警告も出します。

安全な順序と、壊れたときの戻し方

condaの公式ガイドは「できるだけ多くの依存をcondaで入れ、そのあとでpipを使う」こと、pipのあとにcondaパッケージを足す必要が出たら「環境を作り直す」ことを勧めています。実務では、依存をenvironment.ymlに書き、pipの分をpip欄にまとめておくと、作り直しが1コマンドで済みます。

name: analysis
channels:
  - conda-forge
dependencies:
  - python=3.12
  - numpy
  - pandas
  - scikit-learn
  - pip
  - pip:
    - some-pypi-only-package
conda env create -f environment.yml
conda env remove -n analysis    # 壊れたら消して作り直す

condaにあるかどうかはconda search パッケージ名で確かめてから、pipに回します。pipで足すのは、conda-forgeに無い純粋なPythonパッケージに限るのが安全です。

用途別の使い分けと避けたい組み合わせ

用途 選ぶ道具
データ分析・機械学習・GPU conda(Miniforge)
Webアプリ・API・スクリプト pip+venv、またはuv
Python以外のツールも同じ環境に conda、またはPixi
本番のコンテナイメージ pip+venvかuv
Jupyterで授業・研修 Anaconda Distribution

判断に迷うのは機械学習です。PyTorchは2.5を最後に公式のpytorchチャネルでの配布をやめており(conda-forgeには引き続きあります)、公式手順はpipです(詳しくはPyTorchとは?読み方・できること・TensorFlowとの違いと入れ方【2.14対応】)。TensorFlowも公式の導入手順はpipです(TensorFlowをPythonで使う方法:対応版・インストール・GPU設定と動くコード【2026年10月】)。こうしたライブラリが中心なら、conda環境でPython本体とCUDA周りだけをcondaに任せ、フレームワークはpipで最後に入れる、という順序にします。

避けたい組み合わせもはっきりしています。

  • 本番イメージにAnaconda Distributionを入れる:インストーラだけで1GB前後あり、使わないライブラリでイメージが膨らみます。コンテナではpipかuvで必要な分だけ入れます。
  • HomebrewやaptのPythonへ直接pip install:PEP 668に対応したPythonではerror: externally-managed-environmentで止まります(検証ではHomebrewのPythonで発生)。--break-system-packagesで押し切らず、venvを作ってから入れます。
  • condaのbase環境に作業用のパッケージを入れる:baseはconda本体が動いている環境です。壊すとcondaコマンドごと動かなくなるので、作業は必ずconda createした環境で行います。

社内の業務システムやデータ分析基盤をPythonで組む場合、どの道具を選ぶかより「全員が同じ手順で同じ環境を作れるか」で事故の数が決まります。環境定義の設計から任せたい場合はフルスクラッチ開発の支援もご相談いただけます。

Anacondaの商用ライセンス:200人ルールとToS同意

condaというツールと、conda-forgeチャネルは無料です。有料になり得るのはAnaconda社のサービス(defaultsチャネル・Anaconda Distribution・Minicondaからの取得を含む)です。AnacondaのTerms of Service第1条(b)は、関連会社(Affiliates)を含めて従業員・請負人が200人を超える営利組織が利用する場合、Business Planの契約を求めています。関連会社は第21条で、支配・被支配・共通支配の関係にある法人(50%超の所有など)と定義されているため、子会社単体が200人未満でもグループ全体で数えます。

大学など認定された高等教育機関は、Academic Policyにより登録すればStarter Planを無料で使えます。非営利・研究機関も、Non-Profit and Research Policyの条件を満たせば無料の対象です。また2025年7月15日から、MinicondaとAnaconda Distributionに同梱されたconda-anaconda-tosプラグインが有効になり、Anacondaのチャネルへ初めてアクセスするときにコマンドラインで規約への同意を求めます。一括で同意するコマンドはconda tos acceptで、CI=trueのCI環境では自動で同意して警告だけ出します。CIで知らないうちに同意していた、という形で規約の対象になる点は押さえておきます。

費用をかけずに使い続けるなら、Miniforgeを入れてconda-forgeだけを使います。検証したMiniforge 26.7.2-0にはconda-anaconda-tosが入っておらず、conda tosサブコマンド自体がありませんでした。既にMinicondaを使っている場合は、conda config --show channelsでdefaultsが残っていないかを確認します。規約は改定されることがあるため、導入を決める前に最新の条文を確認してください。

Miniforgeのインストール手順(Windows・macOS・Linux)

作った環境にJupyter Notebookを入れて起動する手順はJupyter Notebookのインストール手順|7.6系をpip・uv・condaで入れる方法で扱っています。

Windows:Miniforge PromptとPATHの扱い

MiniforgeのGitHubリリースからMiniforge3-Windows-x86_64.exeを、Minicondaなら公式配布ページから.exeをダウンロードして実行します。インストーラはPATHへの追加を既定で推奨していません。インストール後はスタートメニューに追加されるMiniforge Prompt(MinicondaならAnaconda Prompt)を開いて確認します。

conda --version
conda info

PowerShellでcondaが認識されないときは、このプロンプト内でconda init powershellを一度実行します。

macOS・Linux:インストールスクリプトとauto_activate

Miniforgeは、OSとCPUに合ったスクリプトをGitHubから取得して実行します。Apple Silicon・Intel Mac・Linux(x86_64/aarch64)で同じコマンドです。

curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh

検証環境ではインストールに62秒かかり、展開後の容量はパッケージキャッシュ込みで430MBでした。途中でconda initを実行するか聞かれ、実行するとシェル起動時にbase環境が自動で有効になります。自動で有効にしたくない場合は次の設定を入れます。conda 25.5以降は設定名がauto_activateに変わり、従来のauto_activate_baseは別名として残っています。

conda config --set auto_activate false

condaの基本コマンドと環境の書き出し

日常で使う操作は次の通りです。環境はプロジェクトごとに作ります。

# 環境の作成・切替
conda create -n myenv python=3.12
conda activate myenv
conda deactivate

# 一覧
conda env list           # 環境の一覧
conda list               # 有効な環境のパッケージ一覧

# インストール・更新・削除
conda install numpy=2.5
conda install -c conda-forge scipy
conda update --all
conda remove scipy

# 書き出しと再現
conda env export --from-history > environment.yml
conda env create -f environment.yml

conda env exportをそのまま使うとビルド番号まで固定され、OSが違うと再現できません。チームで共有するなら、明示的に指定したパッケージだけを書き出す--from-historyが扱いやすいです。ただし検証では、pipで入れ替えたパッケージを含む環境で--from-historyを実行するとCondaValueError: Requested package 'numpy' is not found in 'explicit_packages'.で失敗しました。ここでも「pipは最後に、混ぜない」が効いてきます。

conda以外の選択肢:uv・Pixi・conda-pypi

pip側の高速化ならuvとは?Pythonの環境構築・パッケージ管理・バージョン管理の使い方を徹底解説で扱っているuv(最新0.13.1)が第一候補です。pip・venv・pyenvの役割を1つにまとめています。conda側ではPixiとは?Python・conda対応のパッケージ管理ツールの使い方とuv・condaとの違いで扱っているPixi(最新0.82.0)が、conda-forgeのパッケージとPyPIのパッケージを1つのロックファイルで管理でき、本記事で見た「混ぜると壊れる」問題を道具の側で避けられます。

conda本体も変わっています。conda 26.9以降は、PyPIの純粋なPythonパッケージ(wheel)をcondaパッケージと一緒に解決して入れる機能(conda-pypi)を持ちます。conda-pypi自体は26.9で安定版になりましたが、必要なrattlerソルバはまだベータで、26.10で既定になる予定です。検証したconda 26.7.2でも、conda installの後に「conda-pypi beta」を案内するメッセージが出ました。rattlerソルバがベータのうちは、本番の環境定義ではpip欄を使う方法が確実です。

condaとpip・Anacondaに関するよくある質問

condaとpipの違いは何ですか?どちらを使うべき?

pipはPyPIからPythonパッケージを入れるインストーラ、condaはPython本体やC/C++ライブラリまで含めて環境を管理するツールです。依存の矛盾が既存パッケージとの間で起きたとき、pipは警告を出して入れてしまい、condaは他のパッケージも上げ下げして環境全体を揃えます。データ分析・機械学習ならconda、Webアプリやスクリプトならpip(venvかuvと組み合わせる)が目安です。

Anaconda・conda・Miniconda・Miniforgeの違いは?

condaはパッケージと環境を管理するツールで、Anacondaはcondaと数百のライブラリ・Navigatorなどを同梱した配布物です。Minicondaはcondaと最小限のPythonだけ、MiniforgeはMinicondaに近い軽量版で、既定チャネルがconda-forgeになっていてmambaも入っています。

Anacondaやcondaは商用利用で有料ですか?

condaとconda-forgeは無料です。Anaconda社のdefaultsチャネルやAnaconda Distributionを、関連会社を含めて従業員・請負人が200人を超える営利組織で使う場合は、Business Planの契約が必要です。無料で使うならMiniforgeとconda-forgeを選びます。pipとPyPIも無料です。規約は改定されることがあるため、導入前に最新の条文を確認してください。

condaとpipは併用できますか?注意点は?

併用はできますが、順序を守ります。condaで入れられるものを先に全部入れ、最後にpipを使います。pipのあとでconda installすると、pipで入れた版の上にcondaが別の版を書き込み、表示と実際の版が食い違うことがあります。pipを使った環境ではconda doctorで不整合を確認し、condaパッケージを足す必要が出たら環境を作り直します。

Anaconda Promptとは何ですか?使い方は?

AnacondaやMinicondaをWindowsに入れると追加される、condaへのパスが通った状態で起動するコマンドプロンプトです(Miniforgeでは「Miniforge Prompt」)。スタートメニューから開き、conda createやconda activateを実行します。PowerShellで使いたい場合は、このプロンプトでconda init powershellを実行してからPowerShellを開き直します。

関連記事

お気に入りに入れた記事の一覧

この記事は以下の記事からリンクされています

ほか 9 件の記事からもリンクされています。

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.10.27 テックブログ Brotli 脆弱性:CVE-2026-111497の影響確認とNode.js・Python・.NETの更新手順
  2. 2026.10.28 テックブログ リンツ不正アクセス:314万件の対象確認とパスワード強制リセット後の対処
  3. 2026.10.27 テックブログ Joshin(ジョーシン)不正アクセス:最大600万件の対象とサブスク初期パスワードの対処
  4. 2026.10.29 テックブログ So-net情報漏洩:258万件の対象確認とメールのパスワード再設定、窓口の番号
  5. 2026.10.23 テックブログ Renta!はいつ再開?不正アクセスでメールアドレス等が流出したおそれ・再開時のパスワード再設定と運営側の対応

RELATED POSTS 関連記事

目次