2

全新安装 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,通过执行的 python 代码ctrl+Enter与已过时的可执行文件一起运行/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目录中以查找所有上述可执行文件,但我没有地方看表明了这一点。

4

2 回答 2

2

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

当您配置$PATH时,有几种不同的方法可以做到这一点。最常见的方法之一是将其添加到您的主目录中的.bashrc(或.zshrc, .profile, 不管)文件中。然而,当你这样做时,这实际上并没有设置$PATH在其他任何地方......仅适用于 shell 本身,以及从 shell 运行的程序。

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

因此,在更新$PATH.bashrc,Emacs 将看不到该路径,因为它不是从 Bash 启动的。

ASCII 艺术时间

     X 会话 $PATH=<原始 $PATH>
           + +
 +---------+ +--------+
 vv
终端 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

您也许可以使用 Mx customize-group "elpy" 或类似的东西,这意味着您不必.emacs手动编辑。

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

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

于 2018-04-09T21:19:10.017 回答
0

接受的答案很好地解释了正在发生的事情。

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

它确保每当 emacs 启动一个 shell 来运行某些东西时,它将使用您的本地 shell 配置,包括$PATH.bashrc

于 2018-04-09T21:48:41.107 回答