TL; DR: bağımlılık çakışmaları: Birinin güncellenmesi (gereksinimlerine göre) diğerinin eski sürümüne geçilmesini gerektirir
Haklısın:
conda update --all
aslında gitmenin yolu 1 . Conda, paketleri her zaman serideki en yeni sürüme yükseltmeye çalışır (örneğin Python 2.x veya 3.x).
Bağımlılık çatışmaları
Ancak bağımlılık çakışmaları olabilir (bu da daha fazla yükseltmeyi önler). Conda genellikle meydana gelirse çok açık bir şekilde uyarır.
örneğin X, Y <5.0 gerektirir, bu nedenle Y asla> = 5.0 olmaz
Bu yüzden hepsini 'yükseltemezsiniz'.
çözümleniyor
Eklemek için: belki işe yarayabilir, ancak X'in Y> 5.0 ile çalışan yeni bir sürümü conda'da mevcut değildir. Pip ile daha fazla paket mevcut olduğundan pip ile monte etmek mümkündür. Ancak, bağımlılık çakışmaları varsa pip'in paketleri yüklediğini ve genellikle conda ortamınızı artık conda ile güvenilir bir şekilde kuramayacağınız anlamında bozduğunu unutmayın. Bunu yaparsanız, son çare olarak ve tüm paketler conda ile yüklendikten sonra yapın. Bu bir hack.
Deneyebileceğiniz güvenli bir yol , yükseltme yaparken ( bayrak olarak ekleyin ) veya bu yeni sürüme gerçekten ihtiyacınız varsa paketinizi içeren diğer herhangi bir kanalı conda-forge'ı kanal -c conda-forge
olarak eklemektir . Bu şekilde conda bu yerlerde kullanılabilir paketleri de arar.
Güncelleştirmeniz düşünüldüğünde Sen: edebilir bunları ayrı ayrı her yükseltmek, ama sadece yükseltme değil, aynı zamanda hem bir başka paketin bir downgrade içermez Bunu yaparken. Diyelim ki, yukarıdaki örneğe eklemek için:
X> 2.0 Y <5.0 gerektirir, X <2.0 Y> 5.0 gerektirir
Dolayısıyla Y> 5.0'ı yükseltmek X'i <2.0'a düşürmeyi veya tam tersini gerektirir.
( bu elbette pedagojik bir örnektir, ancak gerçekte aynıdır, genellikle sadece daha karmaşık bağımlılıklar ve alt bağımlılıklar ile )
Bu yüzden , yükseltmeleri ayrı ayrı yaparak hepsini yükseltemezsiniz ; bağımlılıklar tatmin edici değildir, bu nedenle daha önce veya daha sonra bir yükseltme zaten yükseltilmiş bir paketi tekrar eski sürüme geçirir. Ya da paketlerin (genellikle istemediğiniz!) Uyumluluğunu kırın ; bu, yalnızca açıkça yok sayma bağımlılıklarını ve force -command komutunu çağırarak mümkündür . Ama bu sadece etmektir kesmek kesinlikle konular etrafında yolu, normal kullanıcı vaka!
1 Kurulumunuzun paketlerini güncellemek istemiyorsanız, genellikle yapmadığınız paketler . Temel ortamda çalıştırılan komut bu paketteki paketleri güncelleyecektir, ancak genellikle sanal ortamlarla ( conda create -n myenv
ve sonra conda activate myenv
) çalışmalısınız. Yürütme conda update --all
böyle bir ortamda içeride paketleri günceller içine bu ortamda. Ancak, temel ortam aynı zamanda bir ortam olduğu için, cevap her iki durum için de aynı şekilde geçerlidir.
conda update --all --alt-hint
Herhangi bir çıktı verip vermediğini görebilir ve deneyebilirsiniz ... Ya da sadececonda update scipy
ne olduğunu (belki de--alt-hint
bayrakla) görmeye çalışın