使用Mac OSC 10.13.4,emacs 25.3(9.0),Python3
我可能会有一些Elpy自动完成的情况可以用于python3,但由于某些原因,并非总是如此。
例如,
numpy.
触发自动完成,但是,
pandas.
没有。
我的直觉是,虽然numpy标配python3,但pandas却没有。所以我需要让emacs指向附加模块所在的目录。简而言之,emacs不使用与python3相同的路径...... 我尝试添加当前emacs路径的路径,但总是无法附加这些路径。我怎样才能做到这一点?
答案 0 :(得分:2)
问题几乎可以肯定是/usr/bin/python
没有使用你认为的相同的Python。
由于您使用的是macOS,因此numpy
中至少有一个其他Python-Apple预安装的Python 2.7版本。在大多数版本的macOS中,这包括一个特殊的“Extras”目录,其中包含通常不会内置于Python中的内容 - 包括pandas
,但不包括pip
,在某些版本中甚至不包括pip show numpy
pip show pandas
。
因此,您的pip
和pip
正在使用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标签更好。