HiddenBeginner

안녕하세요. 방문해 주셔서 감사합니다. 아직 실력이 많이 부족하지만 언젠가 고수 반열에 들어서 이 세상에 많은 기여를 하겠습니다.

[Python] 아나콘다 패키지 설치할 때 다른 패키지를 제거(또는 다운그레이드)하는 문제 해결 방법

15 Sep 2019 » Python

아나콘다 패키지 설치할 때 다른 패키지를 제거(또는 다운그레이드)하는 문제 해결 방법

    아나콘다 명령어 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


저는 이렇게 문제를 해결할 수 있었습니다. 이렇게 했는데도 안 되면 댓글남겨주세요! 같이 고민해드리겠습니다. 그럼 이번 포스트는 여기서 마치도록 하겠습니다.

참고문헌

  1. StackOverflow:Why does conda try to update packages with –no-update-dependencies?
  2. Chapter2_pymc2 does not work with the latest numpy #391
불쌍한 대학원생에게 커피 한 잔 사주기

댓글