Python ortamları için conda veya conda-forge kullanılmalı mı?


128

Condave conda-forgeher ikisi de Python paket yöneticileridir. Her iki depoda da bir paket olduğunda uygun seçim nedir? Örneğin Django, her ikisiyle de kurulabilir, ancak ikisi arasındaki fark birkaç bağımlılıktır (conda-forge'da çok daha fazlası vardır). Bu farklılıklar için açıklama yoktur, basit bir BENİOKU bile.

Hangisi kullanılmalı? Conda veya conda-forge? Önemli mi?


5
"Conda ve conda-forge, her ikisi de Python paket yöneticileridir." Bunun doğru olduğunu sanmıyorum. Bunların aynı kategoride olduğunu bile sanmıyorum. condabir paket yöneticisidir ve conda-forgebir kanaldır. Belki bu soru sorulduğunda doğruydu?
endolith

Yanıtlar:


204

Kısa cevap, benim deneyimlerime göre, hangisini kullandığınızın önemli olmadığıdır.

Uzun cevap:

Bu conda-forge, paketlerin kurulabileceği ek bir kanaldır. Bu anlamda, varsayılan kanaldan veya insanların paket gönderdiği diğer yüzlerce (binlerce?) Kanaldan daha özel değildir. Https://anaconda.org adresinden kayıt olursanız kendi kanalınızı ekleyebilir ve kendi Conda paketlerinizi yükleyebilirsiniz.

Burada conda, çapraz platform paket yöneticisi ve conda-forgepaket kanalı arasındaki sorudaki ifadenizden net olarak bahsetmediğinizi düşündüğüm ayrımı yapmamız gerekiyor . condaYazılımın ana geliştiricileri olan Anaconda Inc. (eski adıyla Continuum IO), ayrıca conda install packagenameherhangi bir seçeneği değiştirmeden yazdığınızda varsayılan olan ayrı bir paket kanalı tutar .

Kanal seçeneklerini değiştirmenin üç yolu vardır. İlk ikisi, bir paketi her kurduğunuzda yapılır ve sonuncusu kalıcıdır. İlki, bir paketi her kurduğunuzda bir kanal belirlemektir:

conda install -c some-channel packagename

Elbette, paket o kanalda bulunmalıdır. Bu yol packagenameve tüm bağımlılıklarını some-channel. Alternatif olarak şunları da belirtebilirsiniz:

conda install some-channel::packagename

Paketin hala var olması gerekiyor some-channel, ancak şimdi yalnızca içinden packagenameçekilecek some-channel. Bağımlılıkları karşılamak için gereken diğer tüm paketler, varsayılan kanal listenizden aranacaktır.

Kanal yapılandırmanızı görmek için şunları yazabilirsiniz:

conda config --show channels

Kanalların aranma sırasını kontrol edebilirsiniz conda config. Yazabilirsin:

conda config --add channels some-channel

Kanalı yapılandırma listesinin some-channelen üstüne eklemek için channels. Bu some-channelen yüksek önceliği verir . Öncelik , birden fazla kanalın belirli bir pakete sahip olması durumunda hangi kanalın seçileceğini ( kısmen ) belirler . Kanalı listenin sonuna eklemek ve en düşük önceliği vermek için şunu yazın:

conda config --append channels some-channel

Eklediğiniz kanalı kaldırmak isterseniz bunu yazarak yapabilirsiniz.

conda config --remove channels some-channel

Görmek

conda config -h

daha fazla seçenek için.

Tüm bunlarla birlikte , Anaconda tarafından sağlanan conda-forgekanal yerine kanalı kullanmanın dört ana nedeni vardır defaults:

  1. Paketler , kanaldakilerden daha güncel conda-forge olabilirdefaults
  2. conda-forgeKanalda şu adresten alınamayan paketler var:defaults
  3. Aşağıdaki gibi bir bağımlılık kullanmayı tercih ediyorum openblas(dan conda-forge) yerine mkl(dan defaults).
  4. Bir derlenmiş kütüphane gerektiren bir paket yüklüyorsanız (örneğin, C uzantısı veya bir C kütüphanesinde etrafında sarıcı), bu olabilir nedeniyle ikili tek kanaldan bir ortamda paketleri indirmeye eğer uyumsuzlukları olasılığını azaltmak temel C kitaplığının uyumluluğu (ancak bu tavsiye güncel olmayabilir / gelecekte değişebilir).

1
Teşekkürler! İlgili iki sorum var: 1. Hangi kanalı denemenin iyi olduğunu nasıl öğrenebilirim ve; 2. Bir kanalı yapılandırdıktan sonra varsayılana nasıl sıfırlayabilirim?
Daniel

1
@Kenny İlk sorunuza cevap vermek için, anaconda.org'da istediğiniz paketi aramalı ve hangi kanalların pakete sahip olduğunu görmelisiniz. İkinci sorunuzu cevaplamak için cevabı düzenledim. Bununla birlikte, bir kanaldan tek bir paket kurmak istiyorsanız conda install -c some-channel packagename, komutu yazmanın yolunu kullanmanın muhtemelen daha kolay olacağını da not ederim
darthbith

bu harika! Conda-forge ve conda arasında desteklenen modül sayısı, tazelik, kapsam vb. Açısından bir karşılaştırma var mı?
Rutger Hofste

1
Is not mkldaha hızlı openblas?
endolith

3
@endolith Belki, ancak 1) muhtemelen yalnızca Intel işlemcilerde ve 2) açık kaynak değil
darthbith

5

Anaconda, kanal içermeyen "ağır ticari kullanıcıların" ödeme yapması gerekecek şekilde Hizmet Koşullarını değiştirdi conda-forge.

conda-forgeKullanım için ödeme yapmak istemiyorsanız, muhtemelen bağlı kalmak isteyeceksiniz. Dokümanlarda belirtildiği gibi :

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

Ayrıca kullanabilirsiniz miniforge olan conda-forgevarsayılan kanal olarak, ve destekler de diğer olağan olanlar kadar ppc64le ve aarch64 platformları.


3

Conda-forge kanalı, conda için oluşturulmuş ancak resmi Anaconda dağıtımının bir parçası olmayan paketleri bulabileceğiniz yerdir.

Genellikle bunlardan herhangi birini kullanabilirsiniz.


0

conda installConda-forge uygulamadıkça kanalları kullanılamadığı için basit bir şekilde kuramayacağınız bazı Python kitaplıkları vardır . Tecrübelerime göre pip, conda'dan farklı kanal kaynaklarına bakmak için daha geneldir. Örneğin, kurmak python-constraintistiyorsanız, bunu şu yolla yapabilirsiniz, pip installancak bunu ** cond ** ile kurabilirsiniz. kanalı belirtmelisiniz - conda-forge.

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

Ama değil

conda install python-constraint

1
Kafa karıştırıcı cevap. pip kurulumu, paketi conda'nın kendi paket yönetimi ve bağımlılık doğrulamasının dışına çıkarır, bu da onu (ve potansiyel olarak bağımlılıklarını) manuel olarak yönetmeniz gerektiği ve bu gibi komutların conda update --allpip kurulu paketi güncellemeyeceği anlamına gelir
Jean Monet

Bu cevap kötü tavsiyeler veriyor. Aynı ortama conda ve pip komutlarını yerleştirmek kötü bir uygulamadır. Conda biçiminde belirli bir python paketi yoksa, tüm paketler için özel olarak conda yüklemesini kullanın. Sonra son çare olarak pip kullanın, çünkü pip paketi bu ortam için conda paket dizinine EKLEMEZ. Bir ortam oluşturmak için conda, sonra pip, sonra conda, sonra pip, ardından conda, vb. Kullanmak, sonunda bozuk bir conda ortam indeksi verecektir.
Rich Lysakowski Doktora
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.