跳转到主要内容

语言服务器协议的Python语言服务器

项目描述

Python LSP Server

image image image image

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-serverpython3-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

第三方插件

安装这些插件将为语言服务器添加额外功能。

请参阅上述存储库中的Python LSP服务器插件编写示例。

cookiecutter-pylsp-plugin是一个cookiecutter模板,用于设置python-lsp-server的基本插件项目。它记录了启动您自己的插件项目所需的所有基本知识。

如果您需要编写插件的帮助,请提交一个问题。

配置

像所有语言服务器一样,配置可以来自与此服务器通信的客户端(即您的编辑器/IDE或其他具有相同目的的工具)。如何实现的详细信息取决于您用于与python-lsp-server通信的编辑器或插件。该级别的可用配置选项在CONFIGURATION.md中记录。

python-lsp-server依赖于其他工具,如flake8和pycodestyle。这些工具可以通过客户端传递的设置进行配置(如上所述),或者从其他配置源进行配置。以下是可以使用到的源:

  • pycodestyle:在~/.config/pycodestylesetup.cfgtox.inipycodestyle.cfg中发现。
  • flake8:在.flake8setup.cfgtox.ini中发现。

默认配置源是pycodestylepyflakes。如果您想使用flake8,您需要:

  1. 禁用pycodestylemccabepyflakes,通过设置相应的enabled配置,例如将pylsp.plugins.pycodestyle.enabled设置为false。这将防止重复的linting消息,因为flake8包含这些工具。
  2. pylsp.plugins.flake8.enabled设置为true
  3. pylsp.configurationSources设置(从您的客户端传入的值)更改为['flake8'],以使用flake8配置。

这些配置文件(如setup.cfg等)中可用的配置选项在相关工具中有记录。

整体配置首先从用户配置(在主目录中)计算得出,然后由语言客户端传入的配置覆盖,最后由在工作区中发现的配置覆盖。

例如,要更改pycodestyle将忽略的错误列表,假设您正在使用pycodestyle配置源(默认),您可以

  1. 将以下内容添加到您的 ~/.config/pycodestyle 文件中:

    [pycodestyle]
    ignore = E226,E302,E41
    
  2. 在您的编辑器中设置 pylsp.plugins.pycodestyle.ignore 配置值。

  3. 与第1步相同,但请添加到项目根目录下的 setup.cfg 文件中。

当按照以下配置进行配置时,Python LSP 服务器可以通过 WebSocket 进行通信。

pylsp --ws --port [port]

以下库是支持 WebSocket 所必需的:

您可以使用以下命令安装此依赖项:

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 (114.3 kB 查看哈希值)

上传时间

构建分布

python_lsp_server-1.12.0-py3-none-any.whl (74.8 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面