语言服务器协议的Python语言服务器
项目描述
Python LSP Server
Python 3.8+的实现语言服务器协议。(注意:版本小于1.4的版本仍然可以使用Python 3.6)
安装
基本语言服务器需要Jedi来提供完成、定义、悬停、引用、签名帮助和符号
pip install python-lsp-server
这将将在您的PATH上暴露pylsp
命令。通过运行pylsp --help
来确认安装成功。
如果找到相应的依赖项,以下可选提供程序将被启用
- Rope用于完成和重命名
- Pyflakes用于检测各种错误
- McCabe用于复杂度检查
- pycodestyle用于风格检查
- pydocstyle用于检查文档字符串风格(默认禁用)
- autopep8用于代码格式化
- YAPF用于代码格式化(优先于autopep8)
- flake8用于错误检查(默认禁用)
- pylint用于代码检查(默认禁用)
可以使用extras
语法安装可选提供程序。例如,要安装YAPF格式化
pip install "python-lsp-server[yapf]"
所有可选提供程序都可以使用以下方式安装:
pip install "python-lsp-server[all]"
如果您遇到类似“install_requires”必须是字符串或字符串列表的错误,请在再次尝试之前升级setuptools。
pip install -U setuptools
Windows和Linux安装
如果您使用Anaconda/Miniconda,可以使用以下conda命令安装python-lsp-server
:
conda install -c conda-forge python-lsp-server
Python-lsp-server在所有主流Linux发行版的仓库中可用,通常称为python-lsp-server
或python3-pylsp
。
例如,以下是在Debian和基于Debian的发行版(例如Ubuntu、Pop!_OS、Linux Mint)中安装的方法:
sudo apt-get install python3-pylsp
或Fedora Linux
sudo dnf install python3-lsp-server
或Arch Linux
sudo pacman -S python-lsp-server
只有在Alpine Linux上,该软件包的名称不同。您可以在终端中输入以下命令来安装它:
apk add py3-lsp-server
第三方插件
安装这些插件将为语言服务器添加额外功能。
- pylsp-mypy:为Python >=3.8提供MyPy类型检查。
- python-lsp-isort:使用isort进行代码格式化(自动导入排序)。
- python-lsp-black:使用Black进行代码格式化。
- pyls-memestra:检测已弃用的API的使用。
- pylsp-rope:使用Rope扩展重构功能。
- python-lsp-ruff:使用ruff进行广泛的快速linting。
请参阅上述存储库中的Python LSP服务器插件编写示例。
cookiecutter-pylsp-plugin是一个cookiecutter模板,用于设置python-lsp-server的基本插件项目。它记录了启动您自己的插件项目所需的所有基本知识。
如果您需要编写插件的帮助,请提交一个问题。
配置
像所有语言服务器一样,配置可以来自与此服务器通信的客户端(即您的编辑器/IDE或其他具有相同目的的工具)。如何实现的详细信息取决于您用于与python-lsp-server
通信的编辑器或插件。该级别的可用配置选项在CONFIGURATION.md
中记录。
python-lsp-server
依赖于其他工具,如flake8和pycodestyle。这些工具可以通过客户端传递的设置进行配置(如上所述),或者从其他配置源进行配置。以下是可以使用到的源:
pycodestyle
:在~/.config/pycodestyle
、setup.cfg
、tox.ini
和pycodestyle.cfg
中发现。flake8
:在.flake8
、setup.cfg
和tox.ini
中发现。
默认配置源是pycodestyle
和pyflakes
。如果您想使用flake8
,您需要:
- 禁用
pycodestyle
、mccabe
和pyflakes
,通过设置相应的enabled
配置,例如将pylsp.plugins.pycodestyle.enabled
设置为false
。这将防止重复的linting消息,因为flake8包含这些工具。 - 将
pylsp.plugins.flake8.enabled
设置为true
。 - 将
pylsp.configurationSources
设置(从您的客户端传入的值)更改为['flake8']
,以使用flake8配置。
这些配置文件(如setup.cfg
等)中可用的配置选项在相关工具中有记录。
整体配置首先从用户配置(在主目录中)计算得出,然后由语言客户端传入的配置覆盖,最后由在工作区中发现的配置覆盖。
例如,要更改pycodestyle将忽略的错误列表,假设您正在使用pycodestyle
配置源(默认),您可以
-
将以下内容添加到您的 ~/.config/pycodestyle 文件中:
[pycodestyle] ignore = E226,E302,E41
-
在您的编辑器中设置
pylsp.plugins.pycodestyle.ignore
配置值。 -
与第1步相同,但请添加到项目根目录下的
setup.cfg
文件中。
当按照以下配置进行配置时,Python LSP 服务器可以通过 WebSocket 进行通信。
pylsp --ws --port [port]
以下库是支持 WebSocket 所必需的:
- websockets 用于 Python LSP 服务器 WebSocket,使用 websockets 库。有关更多详情,请参阅 Websockets 安装。
您可以使用以下命令安装此依赖项:
pip install 'python-lsp-server[websockets]'
LSP 服务器功能
- 自动补全
- 自动导入
- 代码检查
- 代码操作
- 签名帮助
- 转到定义
- 悬停
- 查找引用
- 文档符号
- 文档格式化
- 代码折叠
- 多个工作区
开发
开发安装
# (optional) create conda env
conda create --name python-lsp-server python=3.11 -y
conda activate python-lsp-server
pip install -e ".[all,websockets,test]"
使用 ws 运行服务器
pylsp --ws -v # Info level logging
pylsp --ws -vv # Debug level logging
运行测试套件
# requires: pip install ".[test]" (see above)
pytest
在仓库上作为检查器和代码格式化器运行 ruff
ruff check . # linter
ruff check --fix . # fix all auto-fixable lint issues
ruff format . # format the document
在向 schema.json
添加配置选项后,使用以下命令刷新 CONFIGURATION.md
文件:
python scripts/jsonschema2md.py pylsp/config/schema.json CONFIGURATION.md
许可证
本项目根据 MIT 许可证提供。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
python_lsp_server-1.12.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b6a336f128da03bd9bac1e61c3acca6e84242b8b31055a1ccf49d83df9dc053b |
|
MD5 | 0a30c7e7a0e059f9059d0fce1afe796f |
|
BLAKE2b-256 | 2b15b7e1577b9ca358e008b06910bf23cfa0a8be130ee9f319a262a3c610ee8d |
python_lsp_server-1.12.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2e912c661881d85f67f2076e4e66268b695b62bf127e07e81f58b187d4bb6eda |
|
MD5 | 04dce59233a7d3779e3ad6541838482e |
|
BLAKE2b-256 | 1d4937c9659f76dbf1018d88892c14184db36ce9df09ea7d760162584aee8a58 |