【问题标题】:emacs python Elpy auto-complete not working for allemacs python Elpy自动完成不适用于所有人
【发布时间】:2018-10-05 01:27:27
【问题描述】:

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

我可能有一些 Elpy 自动补全的情况适用于 python3,但出于某种原因,并非总是如此。
例如,

numpy.

触发自动完成,但是,

pandas.

没有。

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

【问题讨论】:

  • Numpy 不是 Python 3 的标准;它是一个第三方库,就像 Pandas 一样,它们很可能安装到同一个站点包中(假设你执行了相同的 pip 或 conda 或任何命令来安装它们)。
  • 好吧,我的直觉是错误的。是的,我安装了相同的 pip。我仍然需要让emacs“看到”熊猫。有铅吗?
  • 您是否有多个 Python,都安装了 numpy,但只有一个安装了 pandas,并且 emacs 指向错误的那个?
  • 我不这么认为。当我执行“pip show <package>”时,我得到:/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages 用于 pandas 和 numpy。
  • 实际上,如果你在 macOS 上,你确实有多个 Python,不管你是否知道,另一个可能有 numpy 但没有 pandas,并且它可能甚至没有点子。这很可能就是 elpy 看到的那个。我已经写了一个答案来详细解释,包括如何验证这是否是您的实际问题。

标签: python python-3.x emacs path elpy


【解决方案1】:

几乎可以肯定,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 标记更好的问题。

【讨论】:

  • 你说得很对:当我从 M-x eshell 运行 pip 时,它告诉我 pip 没有安装。虽然我的 elpy-config 显示:{ Virtualenv........: None RPC Python........: 3.5.2 (/usr/local/bin/python3) Interactive Python: /usr/local /bin/python3 (/usr/local/bin/python3) Emacs.......................:25.3.1 Elpy.......................:1.19。 0 绝地.......................:0.12.0 绳索.......................:0.10.7 Autopep8....... :1.3.5 Yapf.......................:0.21.0 语法检查器....:未找到(flake8 [...] 目录 ~/.local/bin/ 不是在你的 PATH [...] }
  • @CyBu 您无法在 cmets 中有效地格式化内容。但幸运的是,所有这些信息都属于您的问题,以帮助任何试图为您调试错误的其他人,或任何未来有类似问题的提问者,当然您可以在那里编辑问题并很好地格式化它。
猜你喜欢
  • 1970-01-01
  • 2012-07-27
  • 2013-03-17
  • 1970-01-01
  • 1970-01-01
  • 2014-09-18
  • 2017-05-19
  • 1970-01-01
  • 2012-06-29
相关资源
最近更新 更多