아나콘다 패키지 설치할 때 다른 패키지를 제거(또는 다운그레이드)하는 문제 해결 방법
아나콘다 명령어 conda install
로 패키지를 설치할 때 패키지 사이의 버전 의존성(dependency) 때문에 원하지 않았던 패키지 제거나 다운그레이드가 발생할 때가 있습니다. 최근에 프로그래머를 위한 베이지안 with python를 공부하면서 이 위기에 봉착하게 되었는데요. 책에서 많이 사용되는 PyMC2
의 일부 코드가 최신 numpy
버전에서는 제거된 기능을 사용하여 책과 똑같이 코드를 따라해도 에러가 발생하게 된거죠. 정확하게는 2.2.7 예제: 학생들의 부정행위
에서
TypeError: numpy boolean subtract, the
-
operator, is deprecated, use the bitwise_xor, the^
operator, or the logical_xor function instead.
라는 에러 메세지를 마주하게 되었는데요. 저는 이 때 numpy
1.16.5 버전을 사용했고, 이 문제를 해결하기 위해서는 1.13.3 버전으로 다운그레이드 해야했었습니다. 다운그레이드 자체는 쉽지만 anaconda 버전 문제, 패키지 사이의 버전 의존성 문제때문에 많은 시행착오 끝에야 이 문제를 해결할 수 있었습니다. 다른 분들은 저와 같은 시행착오를 겪지 않기를 희망하며 이 포스트를 작성하게 되었습니다.
여기서부터 본론
패키지 다운그레이드는 cmd에서 다음과 같이 conda intall
명령어로 쉽게 할 수 있습니다.
- Note
venv
라는 가상환경에서 설치한다고 가정하고 진행하였습니다.- 그렇다면 자신의 가상환경을 미리 활성화해야겠지요?
activate venv
- 가상환경을 사용하고 있지 않으면 모든 명령어에서
-n venv
를 지워주시면 됩니다.
- 그렇다면 자신의 가상환경을 미리 활성화해야겠지요?
conda install -n venv numpy==1.13.3
이 명령어를 통해 이미 설치된 numpy
를 다운그레이드할 수 있습니다. 하지만 이렇게 명령하면 패키지 사이의 버전 의존성(dependency)때문에 자동으로 PyMC
를 지워버리게 됩니다. 이럴 땐 --no-update-dependencies
flag를 추가적으로 넣어주면 해결할 수 있습니다!
conda install -n venv --no-update-dependencies numpy==1.13.3
이렇게 입력했는데도 numpy
설치할 때 여전히 다른 패키지들을 제거(혹은 다운그레이드)한다면 당신이 최신 아나콘다 버전을 사용하고 있다는 증거입니다! --no-update-dependencies
대신 --no-deps
를 입력해주세요.
conda install -n venv --no-deps numpy==1.13.3
저는 이렇게 문제를 해결할 수 있었습니다. 이렇게 했는데도 안 되면 댓글남겨주세요! 같이 고민해드리겠습니다. 그럼 이번 포스트는 여기서 마치도록 하겠습니다.