+ Etc

[conda] env create -f 도중 발생하는 PackagesNotFoundError

ᕕ(ᐛ)ᕗ 2024. 5. 14. 01:53

conda를 활용해 Github에서 배포한 yml 파일로 가상환경을 설치하던 중, conda-forge를 채널에 추가하고 channel priority를 고쳐도 같은 오류가 반복되었다. 아주 기본적인 부분인데 yml 파일을 사용하는게 처음이다보니 한참 헤맸다..;-)

 

 

 

오류 화면)

Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels:

  - zlib==1.2.11=h7b6447c_3
  (기타등등)

Current channels:

  - https://repo.anaconda.com/pkgs/main/win-64
  - https://repo.anaconda.com/pkgs/r/win-64
  - https://repo.anaconda.com/pkgs/msys2/win-64
  - https://conda.anaconda.org/conda-forge/win-64

 

 

문제 분석)

 

conda에서 공유되는 패키지들은 상단 사진처럼 (패키지명)-(버전)-(빌드)로 구성되어 있는데, 가상환경이 생성된 운영체제와 환경을 설치하려는 운영체제가 완전히 다르면 (빌드)에서 문제가 발생한다. 패키지가 동일하더라도 운영체제에 따라 전부 다른 파일로 배포되는 것이다.

 

같은 운영체제 안에서 세부사항이 다른 경우에는 큰 문제가 없을 듯 하다. ex) 윈도우 64비트와 32비트 사이의 공유

 

 

오류 화면에서 Current channels를 상세히 살펴보면 win-64 체제의 conda-forge를 사용하고 있다. 하지만 yml 파일에 포함된 빌드번호는 linux 체제의 파일을 가리키고 있다. 따라서 이 빌드는 Current channel이 conda-forge/linux-(어쩌고) 여야만 돌아가는 번호.

 

 

해결)

 

yml 파일에 포함된 (패키지명)==(버전)=(빌드) 목록에서 빨간색 부분을 모두 지워준다.

 

적용 전) - zlib==1.2.11=h7b6447c_3

적용 후) - zlib==1.2.11

 

그러면 패키지는 잘 찾으나..! 다른 에러가 나를 기다린다~!!

 

 

참고)

 

conda 패키지 설치를 유연하게 만드는 방법

https://stackoverflow.com/questions/73733991/problem-while-creating-environment-from-yaml-file-iphop

 

윈도우-리눅스 간 가상환경 공유

https://jjnomad.tistory.com/35