Python環境ではcondaまたはconda-forgeを使用する必要がありますか?


127

Condaconda-forgePythonパッケージマネージャーです。パッケージが両方のリポジトリに存在する場合、適切な選択は何ですか?たとえば、Djangoはどちらでもインストールできますが、2つの違いはいくつかの依存関係です(conda-forgeにはさらに多くの依存関係があります)。これらの違いについての説明はなく、単純なREADMEもありません。

どちらを使用する必要がありますか?コンダまたはコンダフォージ?それは重要ですか?


5
「Condaとconda-forgeはどちらもPythonパッケージマネージャーです。」それは本当ではないと思います。同じカテゴリーに属するとは思いません。condaパッケージマネージャーでconda-forgeあり、チャネルです。この質問がされたとき、それは本当だったのでしょうか?
エンドリス

回答:


200

簡単に言えば、私の経験では一般的に、どちらを使用するかは問題ではありません。

長い答え:

だから、conda-forgeパッケージをインストールすることができる、そこから追加のチャネルです。この意味で、これはデフォルトのチャネル、または人々がパッケージを投稿した他の数百(数千?)のチャネルよりも特別なものではありません。https://anaconda.orgにサインアップして独自のCondaパッケージをアップロードすると、独自のチャンネルを追加できます。

ここではconda、クロスプラットフォームパッケージマネージャーとconda-forge、パッケージチャネルを区別する必要があります。condaソフトウェアの主な開発者であるAnaconda Inc.(以前のContinuum IO)も、パッケージの個別のチャネルを維持しています。これは、conda install packagenameオプションを変更せずに入力した場合のデフォルトです。

チャネルのオプションを変更するには、3つの方法があります。最初の2つはパッケージをインストールするたびに実行され、最後の1つは永続的です。最初の方法は、パッケージをインストールするたびにチャネルを指定することです。

conda install -c some-channel packagename

もちろん、パッケージはそのチャネルに存在する必要があります。この方法ではpackagename、からすべての依存関係がインストールされsome-channelます。または、以下を指定できます。

conda install some-channel::packagename

パッケージは引き続きに存在する必要がsome-channelありますが、現在はからのみpackagenameプルされsome-channelます。依存関係を満たすために必要なその他のパッケージは、デフォルトのチャネルリストから検索されます。

チャネル構成を確認するには、次のように記述します。

conda config --show channels

を使用してチャネルを検索する順序を制御できますconda config。あなたは書ける:

conda config --add channels some-channel

チャネルsome-channelchannels構成リストの一番上に追加します。これがsome-channel最も優先されます。優先度は、複数のチャネルが特定のパッケージを持っている場合に選択されるチャネルを(部分的に)決定します。リストの最後にチャネルを追加し、優先順位を最も低くするには、次のように入力します。

conda config --append channels some-channel

追加したチャンネルを削除したい場合は、次のようにして削除できます。

conda config --remove channels some-channel

見る

conda config -h

より多くのオプションについて。

以上のことから、Anacondaが管理するconda-forgeチャネルの代わりにチャネルを使用する主な理由は4つありますdefaults

  1. 上のパッケージは、チャネル上のパッケージよりconda-forge 最新である可能性がありdefaultsます
  2. conda-forgeからは利用できないチャンネルのパッケージがありますdefaults
  3. 次のような依存関係を使用することを好むだろうopenblas(からconda-forge)の代わりにmkl(からdefaults)。
  4. あなたがコンパイルされたライブラリ(例えば、Cの拡張やCライブラリのラッパー)を必要とするパッケージをインストールしている場合、それはありますが原因バイナリに単一チャネルから環境中のすべてのパッケージをインストールした場合に非互換性の可能性を減らしますベースCライブラリの互換性(ただし、このアドバイスは古くなっている/将来的に変更される可能性があります)。

1
ありがとう!関連する質問が2つあります。1。試してみるのにふさわしいチャンネルを見つける方法と 2. 1つのチャネルで構成した後、それをデフォルトにリセットするにはどうすればよいですか?
Daniel

1
@ケニー最初の質問に答えるには、anaconda.orgで目的のパッケージを検索し、そのパッケージがあるチャネルを確認する必要があります。2つ目の質問に回答するように回答を編集しました。ただし、チャネルから単一のパッケージをインストールする場合はconda install -c some-channel packagename、コマンドの記述方法を使用する方がおそらく簡単であることにも注意します
darthbith

これは素晴らしい!サポートされるモジュールの数、鮮度、カバレッジなどに関して、conda-forgeとcondaの比較はありますか?
Rutger Hofste 2018

1
ありませんmklよりも速くopenblas
内部石

3
@endolithたぶん、1)おそらくIntelプロセッサでのみ、2)オープンソースではない
ダースビッツ2018

4

Anacondaは利用規約を変更したため、「ヘビーコマーシャルユーザー」はconda-forgeチャネルを含まずに支払う必要があります。

conda-forge使用料を払いたくない場合は、おそらく使い続けたいでしょう。ドキュメントに記載されているように:

conda config --add channels conda-forge
conda config --set channel_priority strict
conda install <package-name>

デフォルトチャネルを持ち、ppc64leおよびaarch64プラットフォームと他の通常のプラットフォームをサポートするminiforgeを使用することもできconda-forgeます。


3

conda-forgeチャネルには、conda用にビルドされているが、公式のAnacondaディストリビューションにはまだ含まれていないパッケージを見つけることができます。

通常は、どれでも使用できます。


1

conda installconda-forgeを適用しないとチャンネルが利用できないため、シンプルライブラリではインストールできないPythonライブラリがいくつかあります。私の経験では、pipはcondaよりもさまざまなチャネルソースを調べる方が一般的です。たとえば、インストールしたい場合は、** cond **を使用してインストールpython-constraintできますpip install。チャネルを指定する必要があります- conda-forge

conda install -c conda-forge python-constraint // works

だがしかし

conda install python-constraint

混乱する答え。pipインストールでは、パッケージをconda独自のパッケージ管理と依存関係の検証の外に持ちます。つまり、パッケージ(および場合によってはその依存関係)を手動で管理する必要がありconda update --all、pipでインストールされたパッケージを更新しないなどのコマンド
Jean Monet
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.