Emacs Python 解释器设置不正确
Emacs Python Interpreter Is Not Set Correctly
全新安装 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
目录来查找上述所有可执行文件,但我看的地方都没有表明这一点。
这就是我怀疑发生的事情。
配置 $PATH
时,有几种不同的方法。最常见的方法之一是将其添加到主目录中的 .bashrc
(或 .zshrc
、.profile
等)文件中。但是,当您这样做时,这实际上并没有在其他任何地方设置 $PATH
...仅针对 shell 本身,以及从 shell.
运行的程序
您仍然可以从您的 window 管理器(例如 Gnome、Cinnamon、KDE)启动程序,并且这些程序将继承 $PATH
不是来自您的 shell,而是来自您的 X登录会话。
因此在 .bashrc
中更新 $PATH
后,Emacs 将看不到该路径,因为它不是从 Bash.
启动的
ASCII 艺术时间
X Session $PATH=<original $PATH>
+ +
+---------+ +--------+
v v
Terminal Emacs $PATH=<original $PATH>
+
|
v
bash
$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
与大多数 Emacs 软件包一样,Elpy 是可配置的。参见:https://emacs.stackexchange.com/questions/16637/how-to-set-up-elpy-to-use-python3
您可以使用 M-x customize-group "elpy" 或类似的东西,这意味着您不必手动编辑 .emacs
。
解决方案 #3:更改 X 会话的 $PATH
根据您的具体设置,有不同的方法可以做到这一点。我相信将 $PATH
定义从 .bashrc
移动到 .profile
可能会奏效,但我已经有一段时间没有这样做了。
接受的答案很好地解释了发生的事情。
要获得快速解决方案,请安装此软件包:exec-path-from-shell
它确保每当 emacs 启动 shell 到 运行 某些东西时,它将使用您的本地 shell 配置,包括对 $PATH
在 .bashrc
中所做的修改]
全新安装 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
目录来查找上述所有可执行文件,但我看的地方都没有表明这一点。
这就是我怀疑发生的事情。
配置 $PATH
时,有几种不同的方法。最常见的方法之一是将其添加到主目录中的 .bashrc
(或 .zshrc
、.profile
等)文件中。但是,当您这样做时,这实际上并没有在其他任何地方设置 $PATH
...仅针对 shell 本身,以及从 shell.
您仍然可以从您的 window 管理器(例如 Gnome、Cinnamon、KDE)启动程序,并且这些程序将继承 $PATH
不是来自您的 shell,而是来自您的 X登录会话。
因此在 .bashrc
中更新 $PATH
后,Emacs 将看不到该路径,因为它不是从 Bash.
ASCII 艺术时间
X Session $PATH=<original $PATH> + + +---------+ +--------+ v v Terminal Emacs $PATH=<original $PATH> + | v bash $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
与大多数 Emacs 软件包一样,Elpy 是可配置的。参见:https://emacs.stackexchange.com/questions/16637/how-to-set-up-elpy-to-use-python3
您可以使用 M-x customize-group "elpy" 或类似的东西,这意味着您不必手动编辑 .emacs
。
解决方案 #3:更改 X 会话的 $PATH
根据您的具体设置,有不同的方法可以做到这一点。我相信将 $PATH
定义从 .bashrc
移动到 .profile
可能会奏效,但我已经有一段时间没有这样做了。
接受的答案很好地解释了发生的事情。
要获得快速解决方案,请安装此软件包:exec-path-from-shell
它确保每当 emacs 启动 shell 到 运行 某些东西时,它将使用您的本地 shell 配置,包括对 $PATH
在 .bashrc
中所做的修改]