首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python语法检查器(Pylint,Prospector.)与KeyError的碰撞:从Vim内部运行“repoze.who”

Python语法检查器(Pylint,Prospector.)与KeyError的碰撞:从Vim内部运行“repoze.who”
EN

Stack Overflow用户
提问于 2014-11-07 11:51:36
回答 1查看 620关注 0票数 1

我在从vim内部运行pylint时遇到了问题(如果您使用合成器插件,您需要这样做)。

例如,:!pylint --version与此回溯一起崩溃:

代码语言:javascript
复制
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中运行相同的错误探索者

但我不能复制来自Vim外部的错误。在贝壳里。如果我在shell中激活我的Python虚拟环境,然后运行pylint --version,我得到:

代码语言:javascript
复制
$ 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]

如果然后在相同的shell中运行vim,然后在Vim中执行:!pylint --version,则会得到上面的跟踪结果。退出Vim,在shell中再次运行pylint --version,就可以了。

在vim运行命令的环境和我的shell环境之间肯定有一些不同,即触发崩溃。但我不知道如何研究这个问题,所以这个问题带有vim标签。

repoze.who在这里也有牵连。如果我销毁了虚拟环境,创建了一个只安装了pylint和其他语法检查器的新虚拟and,那么在vim内部和外部,一切都可以正常工作。但是,如果我在虚拟环境中运行pip install repoze.who==1.0.19,那么在vim中运行:!pylint --version时(但不是在我的shell中运行它),上面的pylint崩溃就会再次出现。

Vim Version7.4安装于Ubuntu14.04上的软件包。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-10 10:14:57

这似乎是repoze.who 1.0.19的一个问题。virtualenv中的pip install -U repoze.who==2.2解决了问题。奇怪的是,你可以做pip install -U repoze.who==1.0.19并将其降级,而pylint崩溃仍然没有发生。我从来没有弄清楚到底是什么原因造成的,但我怀疑这可能与repoze.who 2.0a1变更日志中的这一项有关:在setup.py (支持分发)中删除ez_setup.py和对它的依赖。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26800656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档