Programing

아나콘다는 가능한 모든 패키지를 업데이트 하시겠습니까?

crosscheck 2020. 7. 20. 07:37
반응형

아나콘다는 가능한 모든 패키지를 업데이트 하시겠습니까?


나는 시도 conda search --outdated예를 들어 scipy이 0.17.1하지만 최근은 0.18.0입니다, 오래된 패키지 많이 있습니다. 그러나 내가 할 때 conda update --all. 패키지를 업데이트하지 않습니다.

업데이트 1

conda update --all --alt-hint

Fetching package metadata .......
Solving package specifications: ..........

# All requested packages already installed.
# packages in environment at /home/user/opt/anaconda2:
#

업데이트 2

해당 패키지를 별도로 업데이트 할 수 있습니다. 할 수 있습니다 conda update scipy. 그러나 왜 한 번에 모두 업데이트 할 수 없습니까?


TL; DR : 종속성 충돌 : 갱신 한 요구 (그것의 요구에 의해) 다른 다운 그레이드

당신이 맞아요 :

conda update --all

실제로 갈 길입니다. Conda는 항상 패키지를 최신 버전 (Python 2.x 또는 3.x)으로 업그레이드하려고합니다.

종속성 충돌

그러나 종속성 충돌이있을 수 있습니다 (추가 업그레이드를 방해 함). Conda는 일반적으로 발생하는 경우 매우 명시 적으로 경고합니다.

예를 들어 X는 Y <5.0을 요구하므로 Y는 절대로 5.0보다 크지 않습니다.

그렇기 때문에 모든 것을 '업그레이드'할 수 없습니다.

해결

추가하려면 : 아마도 작동 할 수 있지만 Y> 5.0으로 작동하는 최신 버전의 X는 conda에서 사용할 수 없습니다. pip에서 더 많은 패키지를 사용할 수 있으므로 pip와 함께 설치할 수 있습니다. 그러나 의존성 충돌이 존재하는 경우 pip는 패키지를 설치하며 일반적으로 더 이상 conda로 안정적으로 설치할 수 없다는 의미에서 conda 환경을 손상시킵니다. 그렇게 할 경우 최후의 수단으로 모든 패키지를 conda와 함께 설치 한 후에 수행하십시오. 오히려 해킹입니다.

당신이 시도 할 수있는 안전한 방법은 업그레이드 할 때 채널로 conda-forge 를 추가 -c conda-forge하거나 (플래그로 추가 ) 이 새로운 버전이 정말로 필요한 경우 패키지가 포함 된 다른 채널을 찾는 것입니다 . 이 방법으로 conda는이 장소에서 사용 가능한 패키지를 검색합니다.

업데이트 고려 : 개별적으로 업그레이드 할 있지만 업그레이드뿐만 아니라 다른 패키지의 다운 그레이드도 포함됩니다. 위의 예에 추가하려면 다음을 수행하십시오.

X> 2.0에는 Y <5.0 필요, X <2.0에는 Y> 5.0 필요

따라서 Y> 5.0을 업그레이드하면 X가 <2.0으로 다운 그레이드되고 그 반대도 마찬가지입니다.

(물론 이것은 교육학적인 예이지만 실제로는 더 복잡하고 하위 종속성이있는 경우와 동일합니다 )

당신은 여전히 업그레이드 할 수 없습니다 그래서 그들 모두를 개별적으로 업그레이드를 수행하여; 종속성은 만족스럽지 못하므로 이전 또는 이후에 업그레이드하면 이미 업그레이드 된 패키지가 다시 다운 그레이드됩니다. 또는 일반적으로 원하지 않는 패키지의 호환성을 무시 하십시오. 이는 명시 적으로 ignore-dependenciesforce -command를 호출하여 가능합니다 . 그러나 만하는 것입니다 해킹 확실히 문제 주위에 당신의 방법이 아닌 일반 사용자의 경우!


질문에보다 정확하게 대답하려면 :

conda (anaconda의 경우 miniconda의 conda)는 패키지의 특정 버전 (> major 및 minor) 내에서만 업데이트됩니다. 이것이 패러다임입니다.

이 문서에서 "참고 : Conda는 시리즈에서 가장 높은 버전으로 업데이트되므로 Python 2.7은 2.x 시리즈에서 가장 높은 버전으로 업데이트되고 3.6은 3.x 시리즈에서 가장 높은 버전으로 업데이트됩니다." 문서

Wang이 재현 가능한 예를 제공하지 않으면 도움이 될 수 있습니다. 예를 들어 실제로 업데이트하려는 가상 환경이거나 Wang이 원하는 것을 얻을 수 있습니까?

conda update -n ENVIRONMENT --all

거의 모든 것만 업데이트하려면 핀 파일을 만들 수 있습니다

echo "conda ==4.0.0" >> ~/miniconda3/envs/py35/conda-meta/pinned
echo "numpy 1.7.*" >> ~/miniconda3/envs/py35/conda-meta/pinned

업데이트를 실행하기 전에

나중에 업데이트를 위해 env의 파일을 무시하려면 다음을 수행하십시오.

conda update --all --no-pin

--all을 업데이트하면 안됩니다. 그럼에도 불구하고 복제 된 환경에서이를 테스트하려면 보호기가 필요합니다.

첫 번째 단계는 항상 현재 사양을 백업하는 것이어야합니다.

conda list -n py35 --explicit 

(그러나 그럼에도 불구하고 jupyterlab 확장과 같이 사용 가능한 소스에 대한 링크가 항상있는 것은 아닙니다)

다음으로 복제 및 업데이트 할 수 있습니다.

conda create -n py356 --clone py35

conda activate py356
conda config --set pip_interop_enabled True # for conda>=4.6
conda update --all

콘다 설정


마지막으로 종속성으로 인해 호환되지 않는 패키지로 작업해야하는 경우 NixOS / nix-pkgs 와 같은 기술로 가능합니다 .


패키지의 수가 증가 할 때 패키지 업그레이드 / 추가시 충돌이 발생할 가능성이 훨씬 높은 패키지의 종속성 그래프를 상상해보십시오. 이를 피하려면 Anaconda에서 새 환경을 작성하십시오.

검소하고 필요한 것만 설치하십시오. 나를 위해 새 환경에 다음 패키지를 설치했습니다.

  • 팬더
  • 사이 킷 학습
  • matplotlib
  • notebook
  • keras

And I have 84 packages in total.


if working in MS windows, you can use Anaconda navigator. click on the environment, in the drop-down box, it's "installed" by default. You can select "updatable" and start from there


To update all possible packages I used conda update --update-all

It works!


conda update --all

update all packages unprompted

conda update --all -y


I solved this problem with conda and pip.

Firstly, I run:

conda uninstall qt and conda uninstall matplotlib and conda uninstall PyQt5

After that, I opened the cmd and run this code that

pip uninstall qt , pip uninstall matplotlib , pip uninstall PyQt5

Lastly, You should install matplotlib in pip by this code that pip install matplotlib

참고URL : https://stackoverflow.com/questions/38972052/anaconda-update-all-possible-packages

반응형