全新安装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