Python

Zed 本身就原生支持 Python。

语言服务器

Zed 支持多个 Python 语言服务器,其中一些可能需要配置才能正常工作。

参见:使用语言服务器 以获取更多信息。

终端中的虚拟环境

如果可用,Zed 将检测 Python 虚拟环境并在终端中自动激活它们。参见:detect_venv 文档 以获取更多信息。

PyLSP

python-lsp-server,更常被称为 PyLSP,默认情况下与许多外部工具集成(autopep8、mccabe、pycodestyle、yapf),而其他工具是可选的,必须显式启用和配置(flake8、pylint)。

参见 Python 语言服务器配置 以获取更多信息。

PyRight

PyRight 配置

pyright 语言服务器提供灵活的配置选项,这些选项在 JSON 格式的文本配置中指定。默认情况下,该文件名为 pyrightconfig.json,位于项目的根目录中。Pyright 设置也可以在 pyproject.toml 文件的 [tool.pyright] 部分中指定。如果 pyrightconfig.jsonpyproject.toml 都存在,则 pyrightconfig.json 文件始终优先于 pyproject.toml

有关更多信息,请参见 Pyright 配置文档

PyRight 设置

pyright 语言服务器还接受特定的 LSP 相关设置,这些设置不一定与项目相关。这些可以在 settings.jsonlsp 部分中更改。

例如,为了

  • 使用严格的类型检查级别
  • 诊断工作区中的所有文件,而不是仅打开的文件的默认设置
  • 提供到特定 Python 解释器的路径
{
  "lsp": {
    "pyright": {
      "settings": {
        "python.analysis": {
          "diagnosticMode": "workspace",
          "typeCheckingMode": "strict"
        },
        "python": {
          "pythonPath": ".venv/bin/python"
        }
      }
    }
  }
}

有关更多信息,请参见 Pyright 设置文档

Pyright 虚拟环境

Python 虚拟环境 允许您将项目的所有依赖项(包括 Python 解释器和包管理器)存储在与计算机上的任何其他 Python 项目隔离的单个目录中。

默认情况下,Pyright 语言服务器将在默认的全局位置查找 Python 包。但是,您也可以配置 Pyright 以使用安装在给定虚拟环境中的包。

为此,请在项目的根目录中创建一个名为 pyrightconfig.json 的 JSON 文件。此文件必须包含两个键

  • venvPath:从项目目录到 包含 一个或多个虚拟环境目录的任何目录的相对路径
  • venv:虚拟环境目录的名称

例如,一种常见的方法是使用以下命令在项目目录的根目录中创建一个名为 .venv 的虚拟环境目录

# create a virtual environment in the .venv directory
python3 -m venv .venv
# set up the current shell to use that virtual environment
source .venv/bin/activate

完成此操作后,您将创建一个包含以下内容的 pyrightconfig.json

{
  "venvPath": ".",
  "venv": ".venv"
}

如果您更喜欢使用 pyproject.toml 文件,则可以添加以下部分

[tool.pyright]
venvPath = "."
venv = ".venv"

您也可以直接在 settings.json 文件中配置此选项(pyright 设置),如 配置您的 Python 环境 中所建议的。

{
  "lsp": {
    "pyright": {
      "settings": {
        "python": {
          "pythonPath": ".venv/bin/python"
        }
      }
    }
  }
}

代码格式化 & Linting

Pyright 语言服务器不提供代码格式化或 linting。 如果您想在保存时检测 lint 错误并重新格式化您的 Python 代码,您需要设置它。

用于格式化 Python 代码的常用工具是 Ruff。 它是另一种用 Rust 编写的工具,是一种非常快速的 Python linter 和代码格式化程序。 它可以通过 Ruff 扩展获得。 要配置 Ruff 扩展以在 Zed 中工作,请参见 此处的设置文档。