spacemacs python可以补全像os这种标准库,但是像numpy这种不能自动补全,有人碰到过类似的问题吗,如何解决呢
能提供一个完整的复现方法吗,我这里可以补全 numpy,用的也是 spacemacs anaconda
用的是anaconda2,使用run-python 在ipython模式下可以弹出补全的候选,在编辑器中不行
而且message中并没有任何报错信息
anaconda-mode buffer 中就一句话 anaconda_mode port 33341
论坛里有不少相关的帖子,看看有没有可以参考的 :site:emacs-china.org python 补全 第三方 库 - Google Search
Python 除了要设置 python-shell-exec-path
,还要设置 exec-path
,如果用到了 python 版本管理器,请确保它在 Emacs 中有效:
(setq python-shell-exec-path (list (expand-file-name "~/.pyenv/shims/")))
(add-to-list 'exec-path (expand-file-name "~/.pyenv/shims"))
google搜索了一遍,都没有效果。 你说的这两个值如下: exec-path is a variable defined in ‘C source code’. Its value is ("/home/tx/llvm6/bin" “/home/tx/anaconda2/bin” “/usr/local/cuda-8.0/bin” “/home/tx/bin” “/home/tx/.local/bin” “/usr/local/sbin” “/usr/local/bin” “/usr/sbin” “/usr/bin” “/sbin” “/bin” “/usr/games” “/usr/local/games” “/snap/bin” “/usr/lib/x86_64-linux-gnu/emacs/27.0.50/x86_64-linux-gnu”)
python-shell-exec-path is a variable defined in ‘python.el’. Its value is ("/home/tx/anaconda2/bin/") Original value was nil 这样设置没有问题吧
没有用virtual environment
import jedi s = jedi.Script(’’‘import os os.’’’, 2, len(‘os.’)) s.completions() for c in s.completions(): print(c.name, c.full_name) 用这个代码测试jedi没有问题,可以补全os,把os换成第三方的库,也没有问题。应该就是jedi没有问题了吧。
jedi 本身就是第三方库,所以,你能使用 jedi,就能使用其他库,比如在 run-python
的时候。
我怀疑这个 anaconda 并没有找到 jedi,补全内容来自 anaconda 本身(纯属猜测,我并不知道这个 mode 是如何工作的)。
检测 exec-path
是否有效, M-x shell-command
然后分别执行:
which python
which pip
pip show jedi
看输出结果是不是符合预期。
我之前遇到了一样的问题,后来发现原来是没有开启company-anaconda 。。。。。