emacs python Elpy 自动完成不适用于所有人

emacs python Elpy auto-complete not working for all

使用 Mac OSC 10.13.4,emacs 25.3 (9.0),Python3

我可以让一些 Elpy 自动补全案例适用于 python3,但由于某些原因,并非总是如此。
例如,

numpy.

触发自动完成,但是,

pandas.

没有。

我的直觉是,虽然 numpy 是 python3 的标准,但 pandas 不是。所以我需要让 emacs 指向附加模块所在的目录。简而言之,emacs 不使用与 python3 相同的路径 ... 我试图将路径添加到当前的 emacs 路径,但它总是无法附加这些路径。我怎样才能做到这一点?

问题几乎可以肯定 elpy 没有使用您认为的 Python。

由于您使用的是 macOS,因此您至少还有一个 Python—Apple 在 /usr/bin/python 中预装的 Python 2.7 版本。在大多数版本的 macOS 中,这包括一个特殊的 "Extras" 目录,里面装满了 Python 通常不内置的东西,其中包括 numpy,但不包括 pandas,在某些版本中甚至 pip.

因此,您的 pip show numpypip show pandas 使用的是 Python 3.5 pip,因为这是您唯一的 pip

但是,如果 elpy 正在查找 Apple 的 Python 2.7 而不是您安装的 Python 3.5,它将查找 Extras numpy 而不会找到任何 pandas.

您还应该看到其他奇怪的不当行为,例如 elpy 试图完成 print 作为 Python 2.x 语句而不是 Python 3.x 函数——但诊断问题最简单的方法不是深入研究所有这些细节,而只是 M-x elpy-config。它应该显示如下内容:

Virtualenv........: None
RPC Python........: 2.7.10 (/usr/bin/python)
Interactive Python: python (/usr/bin/python)
Emacs.............: 25.3.0

……等等

如果是这样,答案是您需要修复 elpy 配置以使用 /usr/local/bin/python3(或您的 Python 3.5 的任何适当路径)。

我相信只要配置 elpy-rpc-python-command 就能让它正确地获取其他所有内容。或者您可以直接在 elpy-config 中进行。但这对于 emacs.SE 来说可能比 SO 上的 Python 标签更好。