vim에서 pylint를 실행하는 데 문제가 있습니다 (사용중인 경우 수행해야 할 문제). syntastic 플러그인). 이 역 추적에Python 구문 검사기 (Pylint, Prospector ...)가 KeyError와 충돌 함 : Vim 내부에서 실행할 때 'repoze.who'
예를 들어 :!pylint --version
충돌 : 나는 또한 빔 내에서 실행되는 동일한 오류 prospector 본 적이
Traceback (most recent call last):
File "/home/seanh/.virtualenvs/ckan/bin/pylint", line 5, in <module>
from pkg_resources import load_entry_point
File "/home/seanh/.virtualenvs/ckan/lib/python2.7/site-packages/pkg_resources.py", line 2736, in <module>
add_activation_listener(lambda dist: dist.activate())
File "/home/seanh/.virtualenvs/ckan/lib/python2.7/site-packages/pkg_resources.py", line 698, in subscribe
callback(dist)
File "/home/seanh/.virtualenvs/ckan/lib/python2.7/site-packages/pkg_resources.py", line 2736, in <lambda>
add_activation_listener(lambda dist: dist.activate())
File "/home/seanh/.virtualenvs/ckan/lib/python2.7/site-packages/pkg_resources.py", line 2274, in activate
list(map(declare_namespace, self._get_metadata('namespace_packages.txt')))
File "/home/seanh/.virtualenvs/ckan/lib/python2.7/site-packages/pkg_resources.py", line 1870, in declare_namespace
path = sys.modules[parent].__path__
KeyError: 'repoze.who'
.
그러나 Vim 외부에서 오류를 재현 할 수 없습니다. 껍질에. 내가 쉘 내 파이썬 가상 환경을 활성화한다면 내가 할 pylint --version
을 실행
$ pylint --version
Warning: option include-ids is deprecated and ignored.
Warning: option symbols is deprecated and ignored.
pylint 1.3.1,
astroid 1.2.1, common 0.62.1
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2]
그때 같은 쉘에서 vim
을 실행하고 나는 위의 역 추적을 얻을 빔에 :!pylint --version
을합니다. Vim을 끝내고 pylint --version
을 쉘에서 다시 실행하면된다.
vim이 명령을 실행하는 환경과 충돌을 유발하는 내 셸 환경 간에는 다른 무언가가 있어야합니다. 그러나 나는 이것을 조사하는 방법을 모른다. 그러므로 vim 태그로이 질문을한다.
repoze.who
도 여기에 관련됩니다. 내 virtualenv를 파괴하고 pylint와 다른 구문 검사기 만있는 새로운 virtualenv를 만들면 모든 것이 vim의 내부와 외부에서 모두 잘 작동합니다. 그러나 만약 내가 pip install repoze.who==1.0.19
virtualenv 다음에 위의 pylint 충돌은 vim에서 :!pylint --version
을 실행할 때 다시 나타납니다 (그러나 내 셸에서는 실행하지 않습니다).
Vim 버전 7.4가 Ubuntu 14.04의 패키지에서 설치되었습니다.