我在从vim内部运行pylint时遇到了一个问题(如果使用的是syntastic插件,就需要这样做)。在
例如,:!pylint --version
与此回溯一起崩溃:
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中运行的相同错误prospector。在
但我不能从Vim外部复制错误。在壳里。如果我在shell中激活Python虚拟环境,然后运行pylint --version
我得到:
如果我在同一个shell中运行vim
,并在Vim中运行:!pylint --version
,我会得到上面的回溯。退出Vim并在shell中再次运行pylint --version
,这很好。在
在vim运行命令的环境和我的shell环境之间,一定有什么不同的东西触发了崩溃。但我不知道如何调查这个问题,所以这个问题有了vim标签。在
repoze.who
也与此有关。如果我销毁了我的virtualenv并创建了一个新的virtualenv,其中只安装了pylint和其他语法检查程序,那么vim内外的一切都可以正常工作。但是如果我在virtualenv中pip install repoze.who==1.0.19
,那么当在vim中运行:!pylint --version
时,上面的pylint崩溃会再次出现(但在我的shell中运行它时不会出现)。在
Vim版本7.4是从ubuntu14.04上的包安装的。在
这似乎是一个问题休息。谁1.0.19条。
pip install -U repoze.who==2.2
中的virtualenv解决了这个问题。奇怪的是,你可以做pip install -U repoze.who==1.0.19
并将其降级,pylint崩溃仍然没有发生。我从来没有弄清楚到底是什么原因造成的,但我怀疑这可能与休养谁2.0a1变更日志:删除ez_设置.py以及对它的依赖设置.py(支持分发)。在相关问题 更多 >
编程相关推荐