Arch Linux下Emacs lsp-mode提示“command pyls is not present on the path”是什么原因
问题原因
你通过pip install 'python-language-server[all]' --user命令安装的pyls可执行文件默认存放在~/.local/bin目录下,终端运行时会自动加载shell配置(.bashrc、.zshrc等)将该目录加入PATH环境变量,所以终端可以正常调用pyls。而通过桌面图标/菜单启动的GUI版Emacs不会加载shell的PATH配置,所以找不到该命令。
解决方法(三种任选其一即可)
方案一:安装
exec-path-from-shell包自动同步shell环境变量
在你的Emacs配置文件中加入如下配置:(use-package exec-path-from-shell :ensure t :when (memq window-system '(mac ns x)) :config (exec-path-from-shell-initialize))重启Emacs后会自动同步shell的PATH配置,即可正常识别pyls命令。
方案二:手动添加路径到Emacs环境变量
不需要额外安装包,直接在配置中加入:(setq exec-path (append exec-path '("~/.local/bin"))) (setenv "PATH" (concat (getenv "PATH") ":" (expand-file-name "~/.local/bin")))方案三:直接指定pyls的绝对路径
先在终端执行which pyls获取pyls的完整路径,比如输出为/home/liu/.local/bin/pyls,然后在配置中加入:(setq lsp-pyls-server-command "/home/liu/.local/bin/pyls")注意将路径替换为你自己设备上
which pyls返回的实际路径。
配置完成后重启Emacs,再打开Python文件即可正常加载lsp-mode的代码补全功能。
内容的提问来源于stack exchange,提问作者Liu
相关产品推荐
相关产品推荐

