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

如何在Emacs的Elpy中禁用Python代码自动补全及YAsnippet?

禁用Elpy中的YAsnippet及自动补全功能

要解决加载Elpy前elpy-modules未定义的问题,你可以通过两种方式修改配置:

方法一:提前预设elpy-modules变量

直接在custom-set-variables中定义去掉不需要模块的elpy-modules列表,Elpy启动时会自动读取这个自定义值:

(package-initialize)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(require 'use-package)

(custom-set-variables
 '(package-selected-packages (quote (elpy python-mode)))
 ;; 移除yasnippet和自动补全相关的company模块,保留其他核心功能
 '(elpy-modules '(elpy-module-eldoc elpy-module-flymake elpy-module-pyvenv elpy-module-django elpy-module-sane-defaults))
)

(use-package elpy
  :ensure t
  :defer t
  :init
  (advice-add 'python-mode :before 'elpy-enable)
)

方法二:在use-package中安全加载Elpy变量定义

通过(require 'elpy nil t)安全加载Elpy的变量定义(不会触发Elpy启用),再修改elpy-modules:

(package-initialize)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(require 'use-package)

(custom-set-variables
 '(package-selected-packages (quote (elpy python-mode)))
)

(use-package elpy
  :ensure t
  :defer t
  :init
  ;; 安全加载Elpy变量定义,避免未定义报错
  (require 'elpy nil t)
  ;; 移除yasnippet模块
  (delete 'elpy-module-yasnippet elpy-modules)
  ;; 如果要完全禁用自动补全,再移除company模块
  (delete 'elpy-module-company elpy-modules)
  (advice-add 'python-mode :before 'elpy-enable)
)

说明

  • 如果你仅想禁用YAsnippet,只需要移除elpy-module-yasnippet即可;
  • 若要彻底关闭自动补全功能,还需移除负责补全的elpy-module-company模块;
  • (require 'elpy nil t)中的nil t表示找不到Elpy包时不报错,同时不执行包的初始化代码,仅加载变量定义。

内容的提问来源于stack exchange,提问作者D Strozzi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:02:25