Jedi:Python 的自动补全、静态分析和重构库
1. 项目介绍
Jedi 是一个用于 Python 的静态分析工具,主要用于 IDE 和编辑器插件中。Jedi 专注于自动补全和跳转功能,同时还提供了重构、代码搜索和查找引用等功能。Jedi 拥有一个简单的 API,易于使用。它还提供了一个参考实现作为 VIM 插件。
Jedi 支持多种编辑器和项目,包括 Vim、Visual Studio Code、Emacs、Sublime Text、TextMate、Kate、Atom、GNOME Builder、Gedit、wdb、Eric IDE、IPython 和 xonsh shell 等。此外,Jedi 还被多个语言服务器使用,如 jedi-language-server、python-language-server 和 python-lsp-server。
2. 项目快速启动
安装
首先,确保你已经安装了 Python。然后,使用 pip 安装 Jedi:
pip install jedi
基本使用
以下是一个简单的示例,展示如何在 Python 脚本中使用 Jedi 进行自动补全:
import jedi
source = '''
def example_function(a, b):
return a + b
example_function(1, 2)
'''
script = jedi.Script(source, 6, len('example_function('), 'example.py')
completions = script.complete()
for completion in completions:
print(completion.name)
在 REPL 中使用
Jedi 也可以在 REPL(如 IPython)中使用。IPython 已经内置了对 Jedi 的支持,因此你无需额外配置即可使用自动补全功能。
3. 应用案例和最佳实践
在 Vim 中使用 Jedi
Jedi 可以通过 jedi-vim 插件在 Vim 中使用。安装 jedi-vim 插件后,你可以在 Vim 中享受自动补全、跳转定义和查找引用等功能。
在 Visual Studio Code 中使用 Jedi
Visual Studio Code 的 Python 扩展使用 Jedi 作为其自动补全引擎。安装 Python 扩展后,你可以在 VS Code 中获得强大的 Python 开发体验。
在 Emacs 中使用 Jedi
Emacs 用户可以通过 jedi.el 插件使用 Jedi。安装 jedi.el 后,你可以在 Emacs 中享受 Jedi 提供的各种功能。
4. 典型生态项目
jedi-language-server
jedi-language-server 是一个基于 Jedi 的语言服务器,支持 LSP(Language Server Protocol)。它可以在多种编辑器中使用,提供自动补全、跳转定义、查找引用等功能。
python-language-server
python-language-server 是一个基于 Jedi 的 Python 语言服务器,支持 LSP。它已经被 python-lsp-server 项目接管,继续提供强大的 Python 开发支持。
IPython
IPython 是一个增强的 Python REPL,内置了对 Jedi 的支持。在 IPython 中,你可以享受自动补全、代码分析和重构等功能。
通过这些生态项目,Jedi 不仅在单一编辑器中表现出色,还在整个 Python 开发生态系统中发挥着重要作用。