Emacs中Elpy-rpc报'exited abnormally with code 1'错误如何修复?
修复Elpy-rpc异常及IPython配置错误的方案
一、先解决IPython配置错误(核心诱因)
报错里的[TerminalIPythonApp] 警告未识别别名'W'是关键——新版本IPython移除了-W这个命令行参数,而当前Elpy版本还在传递该参数给RPC进程,导致启动失败。
解决步骤:
- 打开Emacs,执行
M-x customize-variable RET elpy-rpc-python-command-args RET - 在弹出的配置界面里,删除参数列表中的
-W ignore项,点击「Save for Future Sessions」保存配置 - 重启Elpy RPC进程:执行
M-x elpy-rpc-restart RET
如果习惯手动修改配置文件,也可以在init.el里添加这行代码覆盖默认参数:
(setq elpy-rpc-python-command-args '("-c" "import elpy; elpy.start_rpc()"))
二、若上述方法无效,降级Elpy到兼容版本
因为问题出在Emacs包和conda环境升级后的版本冲突,降级Elpy到之前稳定兼容的版本可以快速恢复功能:
方法1:通过Emacs包管理器降级(适用于Melpa安装的Elpy)
- 先获取旧版本的Elpy包文件:可以从本地包缓存找到之前的版本,或者手动下载对应版本的
elpy.tar包 - 执行
M-x package-install-file RET,选择下载好的旧版本包文件完成安装 - 若当前版本仍在生效,执行
M-x package-menu-mark-for-deletion RET选中当前Elpy版本,再执行M-x package-menu-execute RET删除,重启Emacs即可
方法2:通过pip降级(适用于Python环境中安装的Elpy)
如果你的Elpy是通过pip安装到conda环境里的,直接在终端执行:
pip install elpy==1.35.0
(1.35.0是2023年初的稳定版本,和多数IPython版本兼容性较好,也可以根据自己之前的使用历史选择其他旧版本)
三、验证修复效果
重启Emacs后,打开任意Python文件,执行 M-x elpy-config RET 检查Elpy的RPC连接状态,尝试自动补全功能,确认报错消失、功能恢复正常。
内容的提问来源于stack exchange,提问作者Carlo Tambuatco
相关产品推荐
相关产品推荐

