Emacs Python 解释器设置不正确



全新安装Linux Mint 18.3 Cinnamon。

也是 Gnu Emacs 24.5.1 的全新安装

。也是Anaconda3的全新安装:

~ $ conda -version
usage: conda [-h] [-V] command ...
conda: error: the following arguments are required: command
~ $ conda -V
conda 4.4.10
~ $ python -V
Python 3.6.4 :: Anaconda, Inc.
~ $ anaconda -V
anaconda Command line client (version 1.6.9

Emacs 安装了 python-mode、python 和 elpy,通过ctrl+Enter执行的 python 代码与/usr/bin/python中的可执行文件一起运行,这已经过时了......2.7.2

在命令行上执行python

~ $ which python
/home/user/anaconda3/bin/python
~ $ python
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 18:10:19)

此外,M-x elpy-config会产生一个错误:neither easy install nor pip can be found很奇怪,因为pip是用 anaconda3 安装的

我不知道如何找到 elpy 用来运行 python 的命令或为什么 elpy-config 不起作用,我假设在某个地方,它被硬编码到/usr/bin目录以查找上述所有可执行文件,但我看的地方没有表明这一点。

这就是我怀疑发生的事情。

配置$PATH时,有几种不同的方法可以执行此操作。最常见的方法之一是将其添加到主目录中的.bashrc(或.zshrc.profile,无论什么)文件中。但是,当您执行此操作时,这实际上不会在其他任何地方设置$PATH......仅适用于外壳本身,以及从外壳运行的程序。

您仍然可以从窗口管理器(例如 Gnome、Cinnamon、KDE)启动程序,这些程序将继承$PATH不是来自您的 shell,而是来自您的 X 登录会话。

所以在.bashrc更新$PATH后,Emacs 不会看到这条路,因为它不是从 Bash 启动的。

ASCII 艺术时间

X 会话 $PATH=<原始$PATH>  + +  +---------+ +--------+  五 五 终端 Emacs $PATH=<原始$PATH>  +  |  v 砰砰�� $PATH=/home/user/anaconda3/bin:$PATH

解决方案#1:在.emacs中更改$PATH

这很容易。只需在顶部附近的.emacs中添加一行,如下所示:

(setenv "PATH" "/home/user/anaconda3/bin:/home/user/bin:/home/user/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/game")

这有一些缺点...因为现在您在两个不同的地方设置$PATH,这两个地方可能会彼此不同步(当另一个更改时,您可能会忘记更新一个)。

这是我使用的解决方案。

解决方案#2:配置Elpy以使用您的Python

Elpy,像大多数Emacs软件包一样,是可配置的。请参阅:https://emacs.stackexchange.com/questions/16637/how-to-set-up-elpy-to-use-python3

您可以使用 M-x 自定义组"elpy"或类似的东西,这意味着您不必手动编辑.emacs

解决方案#3:更改X会话的$PATH

根据您的设置细节,有不同的方法可以做到这一点。我相信将$PATH定义从.bashrc移动到.profile可能会起作用,但是自从我这样做以来已经有一段时间了。

接受的答案对正在发生的事情有一个很好的解释。

要获得快速解决方案,请安装此软件包:exec-path-from-shell

它确保每当 emacs 启动一个 shell 来运行某些东西时,它都会使用你的本地 shell 配置,包括对$PATH所做的修改.bashrc

最新更新