Emacs配置elpy时报错Symbol's function definition is void: use-package怎么办
报错原因
该报错核心是当前Emacs运行环境未加载use-package功能模块,分两种常见场景:
- 若使用Emacs 28及更早版本:
use-package不属于Emacs内置功能,未提前完成该包的安装与加载 - 若使用Emacs 29及更高版本:
use-package虽已内置,但配置中未主动调用加载指令启用该功能
修复方案
通用方案(适配所有Emacs版本)
在你现有配置的最开头添加如下代码,自动完成包管理器初始化、use-package的安装与加载:
;; 初始化官方包管理器 (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) (package-initialize) ;; 自动安装use-package(若未安装) (unless (package-installed-p 'use-package) (package-refresh-contents) (package-install 'use-package)) (require 'use-package) ;; 可选配置:开启全局自动安装缺失包,后续use-package声明无需重复写:ensure t (setq use-package-always-ensure t)
添加完成后,你原有elpy配置可直接保留使用。如果开启了上述可选的全局配置,elpy配置可简化为:
(use-package elpy :init (elpy-enable))
精简方案(仅适配Emacs 29及更高版本)
若确认使用Emacs 29及以上版本,无需兼容旧版本,只需在现有配置最开头添加一行加载指令即可:
(require 'use-package)
修改完成后重启Emacs,或执行M-x eval-buffer加载当前配置文件即可验证修复效果。
内容的提问来源于stack exchange,提问作者heavyblack1
相关产品推荐
相关产品推荐

