有没有办法让python omnicomplete与vim中的非系统模块一起使用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有办法让python omnicomplete与vim中的非系统模块一起使用?相关的知识,希望对你有一定的参考价值。

我唯一可以使用python omnicomplete来处理的是系统模块。我现在正在处理的网站包或模块中的模块没有得到任何帮助。

答案

我在PYTHONPATH或site-packages中完成了我自己的模块。我不确定您使用的是哪个版本的pythoncomplete.vim脚本,但您可能希望确保它是最新版本。

编辑:以下是我在系统中看到的一些例子......

这个文件(mymodule.py),我puth在PYTHONPATH的一个目录中,然后在site-packages中。两次我都能得到下面的截图。

myvar = 'test'

def myfunction(foo='test'):
    pass

class MyClass(object):
    pass
另一答案

一旦我为我的一个站点包生成了ctags,它就开始为该包开始工作 - 所以我猜测omnicomplete函数依赖于非sys模块的ctags。

编辑:根本不是真的。

这是问题 - 我的测试不好 - omnicomplete WAS为我的项目的一部分工作,而不是大部分。

问题是我正在开发一个django项目,为了导入django.db,你需要设置一个环境变量。由于我无法导入django.db,任何继承自django.db的类或任何导入从django.db继承的类的模块都无法完成。

另一答案

今晚在Python reddit上遇到过这个问题:PySmell。看起来像你在寻找什么。

PySmell是一个python IDE完成助手。

它尝试静态分析Python源代码,而不执行它,并生成有关IDE工具可以使用的项目结构的信息。

另一答案

虽然重要的是要注意你必须正确设置你的PYTHONPATH环境变量,根据前面的答案,有一个值得注意的bug in Vim which prevents omnicompletion from working when an import fails。从Vim 7.2.79开始,这个bug还没有修复。

另一答案

故障排除提示:验证您尝试全向完成的模块是否可由VIM导入。我有一些VIM不喜欢的语法正确的Python:

:python import {module-name}
 Traceback (most recent call last):
   File "<string>", line 1, in ?
   File "modulename/__init__.py", line 9
     class empty_paranthesis():
                            ^
 SyntaxError: invalid syntax

例如,从我的类定义中删除括号允许VIM导入模块,随后该模块上的OmniComplete开始工作。

另一答案

我想你的pydiction脚本之后。它允许您将自己的东西和网站包添加到omni完成。

在你的时候,将以下内容添加到python.vim文件中......

 set iskeyword+=.

这将让您自动完成包功能,例如如果你输入......

 os.path.

然后[CTRL] [N],您将获得os.path的函数列表。

以上是关于有没有办法让python omnicomplete与vim中的非系统模块一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

Vim 中的 Omnicomplete 可以用于 python/3 完整的函数名称还是方法?

Vim PHP omni完成

Vim PHP 全方位补全

Python:有没有办法让 swipl 查询产生值 true 而不是 ?

有没有办法让这个 Python kNN 函数更高效?

有没有办法让 jupyter notebooks 中的 python showtraceback 可以滚动?