Homebrew로 설치한 Macvim 에서 Python 관련 이상증상

상황은 약간 제한적인데, OS X 에서 Homebrew를 이용해 Python과 Macvim 등을 설치해서 사용하는 과정에서 언젠가 이런 오류가 발생 할 수 있다. (Ruby도 관련이 있을지도 모르겠다)

Vim을 실행시켰는데 python 확장이 실행될 때 아래와 같은 오류가 발생 할 수 있다.
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/site.py", line 75, in <module> __boot()
    File "/usr/local/lib/python2.7/site-packages/site.py", line 3, in __boot
      import os

ImportError: No module named os
내 경우 이 오류가 발생하면서 Vim이 강제종료되고 터미널환경이 박살(?)나버리는 끔찍한 문제가 생겼다.

물론 완전히 똑같을리는 없지만 ImportError가 발생한다는 공통점이 있다. 내용 상 site-packages가 저장된 곳이 현재 설치된 Python 버전의 것이 아닌 것임을 파악 할 수 있다.

이 문제가 발생하는 경우는 Vim 확장으로 Pyflake를 설치해서 사용 중 .py 파일을 열었다거나 혹은 Vim내에서 :python 등으로 직접 Vim의 Python확장을 이용해 python을 이용하는 경우 등이 있다.

문제의 원인은 Macvim이 빌드될 때 참조한 Python과 현재 사용중인 Python이 다른 경우 발생한다. 즉 homebrew를 이용해 설치된 패키지를 업그레이드 했을 때 Macvim보다 Python이 나중에 업그레이드가 되고 구버전을 모두 삭제(brew cleanup -a) 했을 경우 발생하게 된다.

문제 해결은 단순하다. Macvim을 지우고 현재 시스템(OS X) Python을 참조하도록 새로 설치하는 것이다. 이 과정에서 Python도 함께 unlink 및 link하는 과정을 해야 하는 점도 있긴 하지만....
$ brew unlink python
$ brew unlink macvim
$ brew remove macvim
$ brew install -v —-force macvim
$ brew link macvim
$ brew link python
Macvim을 다시 링크하지 않아도 될지도 모르겠지만 한다고 해서 문제가 생기는 건 아니다. 어쨌든 이후 Macvim을 실행시켜서 동작이 잘 되는지 확인해 보면 될 것이다.

[관련글] [Vim] MacVim은 터미널에서도 돌아간다.

댓글

이 블로그의 인기 게시물

버전(Version)을 제대로 이해하기

소수점 제거 함수 삼총사 ceil(), floor(), round()