python-lsp-server:一个可插拔的 Python 语言服务器
python-lsp-server 是一个基于 LSP 协议的可插拔 Python 语言服务器,提供代码补全、跳转、格式化等 IDE 功能。其核心特点是模块化设计,基础安装仅包含 Jedi 核心功能,其他功能如代码检查、格式化等通过插件按需加载。支持 pip 及各主流系统包管理器安装,并拥有丰富的第三方插件生态。配置灵活,支持多层级配置优先级,适合需要在轻量级编辑器中获得 IDE 功能的开发者使用
python-lsp-server:一个可插拔的 Python 语言服务器
Python 开发者写代码时,补全、跳转、格式化这些功能几乎是刚需。python-lsp-server 是一个基于 Language Server Protocol 的 Python 语言服务器,Star 数 2558,用来给编辑器提供这些能力。

它提供什么
这个项目基于 Jedi 实现了核心的 IDE 功能:代码补全、定义跳转、悬停提示、引用查找、签名帮助、符号导航。安装后暴露 pylsp 命令,编辑器通过 LSP 协议与其通信即可使用这些功能。

它的特点是高度可插拔。基础安装只包含 Jedi,其他功能通过可选依赖按需加载。如果你只需要补全和跳转,装基础包就够了。想要格式化就加 YAPF 或 Black,想要类型检查就加 mypy,这种按需组合的方式比较灵活。
可选插件覆盖了代码质量检查的多个维度:
- Rope:补全和重命名
- Pyflakes:错误检测
- McCabe:复杂度检查
- pycodestyle:代码风格检查
- autopep8 / YAPF:代码格式化
- flake8 / pylint:额外的代码检查
安装时可以用 extras 语法指定需要的功能,比如 pip install "python-lsp-server[yapf]" 只装格式化,pip install "python-lsp-server[all]" 则全部装上。
安装途径很多
除了 pip,它也进了各大发行版的仓库。Debian/Ubuntu 用 apt-get install python3-pylsp,Fedora 用 dnf install python3-lsp-server,Arch 用 pacman -S python-lsp-server,Alpine 用 apk add py3-lsp-server。Anaconda 用户可以直接 conda install -c conda-forge python-lsp-server。覆盖面挺广的,基本上主流的包管理工具都能直接拿到。
插件生态
官方维护了一系列第三方插件扩展能力:
- pylsp-mypy:静态类型检查
- python-lsp-black:Black 格式化
- python-lsp-isort:自动 import 排序
- python-lsp-ruff:高性能 linting
- pylsp-rope:扩展重构功能
- pyls-memestra:检测弃用 API
每个插件都是一个独立的 Python 包,按需安装即可。官方还提供了 cookiecutter 模板,方便开发者写自己的插件。这套机制让社区可以持续扩展功能,而不需要改动核心代码。
配置方式
配置可以通过编辑器客户端传递,也可以读取工具自身的配置文件。pycodestyle 的规则在 ~/.config/pycodestyle、setup.cfg、tox.ini 等位置都能生效。优先级是用户配置 < 客户端配置 < 工作区配置,越靠近项目的配置越优先。
实际使用
除了标准 LSP 功能,它还支持 WebSocket 通信,启动时加 --ws --port 参数即可。远程开发场景下,这个特性比较实用。
适合谁用
如果你用 Neovim、VS Code 以外的编辑器,或者想用一套统一的工具给 Python 项目提供 IDE 功能,这个工具值得考虑。它的插件架构让你只装自己需要的部分,避免了全家桶式的依赖膨胀。配置也相对直观,大部分选项都能在编辑器设置或项目配置文件中管理。
自己需要的部分,避免了全家桶式的依赖膨胀。配置也相对直观,大部分选项都能在编辑器设置或项目配置文件中管理。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)