나는 시도 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
실제로 갈 길입니다 1 . 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-dependencies 및 force -command를 호출하여 가능합니다 . 그러나 만하는 것입니다 해킹 확실히 문제 주위에 당신의 방법이 아닌 일반 사용자의 경우!
1 실제로 설치 패키지를 업데이트하려는 경우 일반적으로 그렇지 않습니다 . 기본 환경에서 실행되는 명령은 여기에서 패키지를 업데이트하지만 일반적으로 가상 환경 ( conda create -n myenv
및 conda activate myenv
)으로 작업해야합니다 . conda update --all
이러한 환경 내에서 실행 하면이 환경 내의 패키지가 업데이트 됩니다. 그러나 기본 환경도 환경이므로 두 가지 경우 모두 동일한 방식으로 답이 적용됩니다.
답변
질문에보다 정확하게 대답하려면 :
conda (anaconda의 경우 miniconda의 conda)는 패키지의 특정 버전 (> major 및 minor) 내에서만 업데이트됩니다. 이것이 패러다임입니다.
문서에서 “참고 : Conda는 시리즈에서 가장 높은 버전으로 업데이트되므로 Python 2.7은 2.x 시리즈에서 가장 높은 버전으로 업데이트되고 3.6은 3.x 시리즈에서 가장 높은 버전으로 업데이트됩니다.”
문서
Wang이 재현 가능한 예를 제공하지 않으면 도움이 될 수 있습니다. 예를 들어 실제로 업데이트하려는 가상 환경이거나 Wang이 원하는 것을 얻을 수 있습니까?
conda update -n ENVIRONMENT --all
* “update –all”을 실행하기 전에 문서를 읽으십시오! 이로 인해 모든 패키지가 본질적으로 업데이트되는 것은 아닙니다. conda는 사용자 환경의 모든 패키지 간의 종속성 관계를 해결하려고 시도하므로 경고없이 패키지가 다운 그레이드 될 수 있습니다.
거의 모든 것만 업데이트하려면 핀 파일을 만들 수 있습니다
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
최신 정보:
conda의 아이디어는 훌륭하지만 복잡한 환경에서 잘 작동하지 않기 때문에 개인적으로 nix-shell (or lorri) and poetry
[우수한 pip / conda .-)] ( intro poetry2nix ) 의 조합을 선호합니다 .
마지막으로 종속성으로 인해 호환되지 않는 패키지로 작업해야하는 경우 NixOS / nix-pkgs 와 같은 기술로 가능합니다 .
답변
패키지의 수가 증가 할 때 패키지 업그레이드 / 추가시 충돌이 발생할 가능성이 훨씬 높은 패키지의 종속성 그래프를 상상해보십시오. 이를 피하려면 Anaconda에서 새 환경을 작성하십시오.
검소하고 필요한 것만 설치하십시오. 나를 위해 새 환경에 다음 패키지를 설치했습니다.
- 팬더
- 사이 킷 학습
- matplotlib
- 공책
- 케 라스
그리고 총 84 개의 패키지가 있습니다.
답변
MS 윈도우에서 작업하는 경우 Anaconda 탐색기를 사용할 수 있습니다. 드롭 다운 상자에서 환경을 클릭하면 기본적으로 “설치”됩니다. “업데이트 가능”을 선택하고 거기서부터 시작할 수 있습니다
답변
내가 사용한 모든 가능한 패키지를 업데이트하려면 conda update --update-all
효과가있다!
답변
이 문제를 conda
and로 해결했습니다 pip
.
먼저 다음을 실행합니다.
conda uninstall qt and conda uninstall matplotlib and conda uninstall PyQt5
그 후 cmd를 열고이 코드를 실행하면
pip uninstall qt , pip uninstall matplotlib , pip uninstall PyQt5
마지막 matplotlib
으로이 코드로 pip로 설치해야 합니다.pip install matplotlib