1

vim 内から pylint を実行すると問題が発生します (シンタスティック プラグインを使用している場合はこれを行う必要があります)。

たとえば、次の:!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 内で実行されている同じエラープロスペクターも確認しました。

しかし、Vim の外部からエラーを再現することはできません。シェルで。シェルで Python 仮想環境をアクティブにしてから実行すると、次のよう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 で実行すると、上記のトレースバックが表示されます。Vim を終了pylint --versionし、シェルで再度実行すると問題ありません。

vimがコマンドを実行する環境と、クラッシュを引き起こしている私のシェル環境との間に何か違うものがあるに違いありません。しかし、これを調査する方法がわからないため、vim タグを使用してこの質問をします。

repoze.whoもここに関係しています。virtualenv を破棄し、pylint とその他の構文チェッカーだけがインストールされた新しい virtualenv を作成すると、vim の内外ですべてが正常に機能します。しかし、pip install repoze.who==1.0.19その後virtualenvで実行すると、vimで実行すると上記のpylintクラッシュが再表示されます:!pylint --version(ただし、シェルで実行すると表示されません)。

Ubuntu 14.04 のパッケージからインストールされた Vim バージョン 7.4。

4

1 に答える 1

0

これは repoze.who 1.0.19 の問題のようです。pip install -U repoze.who==2.2virtualenv で問題を取り除きます。奇妙なことに、それを実行してダウングレードできますがpip install -U repoze.who==1.0.19、pylint のクラッシュはまだ発生していません。私はそれを引き起こしている正確な原因を突き止めることはできませんでしたが、repoze.who 2.0a1 変更ログからのこの項目と関係があるのではないかと思います: .

于 2014-11-10T10:14:57.320 に答える