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

时间:2018-04-24 17:21:44

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

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

我可能会有一些Elpy自动完成的情况可以用于python3,但由于某些原因,并非总是如此。
例如,

numpy.

触发自动完成,但是,

pandas.

没有。

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

Numpy gets autocompletion but pandas does not

1 个答案:

答案 0 :(得分:2)

问题几乎可以肯定是/usr/bin/python没有使用你认为的相同的Python。

由于您使用的是macOS,因此numpy中至少有一个其他Python-Apple预安装的Python 2.7版本。在大多数版本的macOS中,这包括一个特殊的“Extras”目录,其中包含通常不会内置于Python中的内容 - 包括pandas,但不包括pip,在某些版本中甚至不包括pip show numpy pip show pandas

因此,您的pippip正在使用Python 3.5 elpy,因为这是您唯一的numpy

但如果pandas找到Apple的Python 2.7而不是你安装的Python 3.5,它会找到额外的elpy,但找不到任何print

您还应该看到其他奇怪的错误行为,例如M-x elpy-config尝试完成Virtualenv........: None RPC Python........: 2.7.10 (/usr/bin/python) Interactive Python: python (/usr/bin/python) Emacs.............: 25.3.0 作为Python 2.x语句而不是Python 3.x函数 - 但诊断问题的最简单方法是不要深入研究所有这些细节,而只是elpy。它应该显示如下:

/usr/local/bin/python3

......等等。

如果是这样,答案是您需要修复elpy-rpc-python-command配置以使用elpy-config(或者适用于Python 3.5的适当路径)。

我认为仅仅配置public function m_get_wer() { $sql = "SELECT asd FROM test2"; $data = $this->db->query($sql)->result_array(); if ($data) { foreach ($data as $key => $item) { $result[$key] = $item['asd']; } } //print_r($result);die; return $result; } 会使其正确地接收其他所有内容。或者你可以在Array ( [0] => A [1] => B [2] => C [3] => D ) 内部进行。但对于emacs.SE而言,这可能比SO标签上的Python标签更好。