Python 2, 3 site-package 경로 관리.

OSX 환경에서, python2, python3 을 사용하고 있습니다.

python2를 주로 사용하고 있으나, tensorflow, jupyter notebook 등의 사용을 위해서 python3 을 사용할 때도 많은데요,

brew 로 update 를 진행하고 난 뒤부터, pip, pip3 을 통해 설치되는 site-package 경로가 변경된 것을 확인할 수 있었습니다.

때문에, 지금 발생되는 문제는 terminal 에서 pip 를 통해 설치한 라이브러리들이 terminal 환경에서 실행하는 python2, python3 환경에서는 정상적으로 import 되지만 jupyter 등 다른 환경에서 실행할 경우 getsitepackge()에 경로가 포함되어 있지 않아서 불편함을 겪고 있습니다.

물론, sys.path.append 를 선언하고 경로를 추가하면 정상적인 사용이 되는 것을 알고 있으나 항상 선언해야하는 번거로움이 있습니다.

아래 글과 같은 문제점인거죠,

http://hashcode.co.kr/questions/1184/pythonpath%EC%97%90-%EC%98%81%EA%B5%AC%EC%A0%81%EC%9C%BC%EB%A1%9C-%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC-%EC%B6%94%EA%B0%80%ED%95%98%EA%B8%B0

위 글에서, 제시된 export PYTHONPATH="${PYTHONPATH}:/my/other/path" 를 사용하여 일시적으로 해결되는 것으로 보였으나 제가 virtual env 환경을 사용하지 않기 때문에 위와 같이 환경 변수를 추가할 경우, python2, python3 를 각각 실행할 때, 아래와 같은 오류를 확인할 수 있었으며,

Failed to import the site module
Your PYTHONPATH points to a site-packages dir for Python 2.x but you are running Python 3.x!
     PYTHONPATH is currently: "/usr/local/lib/python2.7/site-packages:"
     You should `unset PYTHONPATH` to fix this.

아래와 같은 설정으로 다시 원복시킬 수 있었습니다.

unset PYTHONPATH

제가 질문하고 싶은 부분은,

import site
site.getsitepackages()

를 수행했을 때, 로드되는 site-package 경로에 일부 누락되는 경로들을 추가하는 방법을 알고 싶습니다.

누락되는 site-package 경로만 추가해준다면, 정상적인 사용이 될 것 같다는 제 생각인데요, 관련 검색을 해보아도, 위와 동일한 류의 답변만 찾을 수 있던터라 해결을 하지 못하고 있습니다.

위와 같은 문제점에 대한 해결방안을 알려주신다면 감사 드리겠습니다!

1답변

  • 보통은 그런경우 때문에 virtualenv 나 venv 같은 가상의 컨텍스트를 만드는 도구를 사용합니다.

    지금이라도 virtualenv, venv 류의 도구로 별도의(전용의) 환경을 만드세요.

    • 넵. 저도 알고는 있는 부분이고, 다른 os에선 그렇게 사용을 해왔으나 osx에서 여태껏 해당 문제가 발생한케이스가 없이 package 관리가 잘되었었거든요.. 일단 문제적인 jupyter ipython 실행시 config 를 이용해 해당 site package경로를 append해주고 있는데 venv구성시 기존 패키지 의존성이 어떻게 되는지 알고 계신가요?? HorolLooloo 2018.3.13 16:08
    • 기존 페키지 의존성이라 하면 어떤 패키지들과의 관계를 말하는 건가요? site-package 쪽은 새로 생성됩니다. 정영훈 2018.3.13 16:23

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.