You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Emacs中配置Python语言服务?LSP-Pyright配置遇阻求助

解决Emacs中Python自动补全与语法高亮配置问题

方案一:修复lsp-pyright配置(解决"找不到lsp-mode"报错)

你遇到的找不到lsp-mode问题,大概率是手动克隆仓库时没处理好依赖关系,或者use-package配置没声明依赖。推荐用MELPA包管理器安装,避免路径混乱:

  • 确保Emacs配置里开启了MELPA源,然后用以下use-package配置:
(use-package lsp-mode
  :ensure t
  :commands (lsp lsp-deferred)
  :init
  (setq lsp-keymap-prefix "C-c l")) ; 自定义快捷键前缀,可按需修改

(use-package lsp-pyright
  :ensure t
  :hook (python-mode . lsp-deferred) ; 打开Python文件自动启动语言服务
  :init
  (setq lsp-pyright-auto-import-completions t) ; 启用自动导入补全
  (setq lsp-pyright-typechecking-mode "basic")) ; 类型检查级别,可选strict/off
  • 如果坚持手动克隆,必须同时把lsp-mode的仓库也克隆到Emacs的load-path中,配置示例:
;; 替换成你的实际路径
(add-to-list 'load-path "~/emacs-packages/lsp-mode")
(add-to-list 'load-path "~/emacs-packages/lsp-pyright")

(require 'lsp-mode)
(require 'lsp-pyright)
(add-hook 'python-mode-hook #'lsp-deferred)

方案二:用Eglot+Pyright(适配你已有的C++配置逻辑)

既然你已经熟悉Eglot+clangd的配置,直接复用这套逻辑更高效,无需额外学习lsp-mode:

  1. 先通过npm安装pyright:npm install -g pyright,确保npm的bin路径在Emacs的exec-path里(可以用M-x exec-path检查)
  2. 添加Eglot的Python关联配置:
(use-package eglot
  :ensure t
  :hook (python-mode . eglot-ensure)
  :config
  ;; 手动指定pyright的启动命令,确保Eglot能找到
  (add-to-list 'eglot-server-programs
               '(python-mode . ("pyright-langserver" "--stdio"))))

打开Python文件后,Eglot会自动启动pyright,提供补全、语法检查、跳转等功能,和你用clangd的体验一致。

语法高亮增强

默认的python-mode已经提供基础语法高亮,如果想要更精准的高亮效果,可以搭配tree-sitter:

(use-package tree-sitter
  :ensure t
  :config
  (global-tree-sitter-mode)
  (add-hook 'tree-sitter-after-on-hook #'tree-sitter-hl-mode))

(use-package tree-sitter-langs
  :ensure t)

tree-sitter会基于语法树提供更细致的高亮,比如区分类名、函数名、变量名的不同样式。

内容的提问来源于stack exchange,提问作者johannes-el

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 03:45:22