Spacemacs python mode下,自动补全不能正常工作


#1

在 Python mode 下,用 run-python 开启了 interpreter。然后用 tab 补全,基本上没有成功的。但是我自己下载一个 company-jedi 并运行,就可以获得正确的补全。请问我是有什么地方没有配置对么?我只是在 spacemacs 的配置文件中加上了 Python 和 auto-complete 两个 layer。


#2

python/post-init-company 这个函数中 添加一下代码就可以了。

(defun python/init-company-jedi ()
    (use-package company-jedi
      :if (configuration-layer/package-usedp 'company)
      :defer t
      :init
      (push 'company-jedi company-backends-python-mode))))

有个问题就是,没法跳转,想查很多东西查不了


#3

补充一下,解决了 anaconda-mode 不能使用的情况。原因是 mac 下 使用 brew 安装的 python 在使用 pip 安装 anaconda 的时候会出错。需要在 ~/.pydistutils.cfg 中写入

[install]
prefix=

在手动运行

pip install anaconda-mode==0.1.1

重新启动 spacemacs 就可以解决这个问题了。


"建议要用python的同学,不要使用emacs 25的版本"
#4

python层是依赖semantic层的,你加入semantic层支持应该就可以解决这个问题了。


#5

试试看,前两天一直卡在这个上面了。。。谢谢 :smiley:

@guanghui.qu 师傅师傅 问题解决了,我信仰充值果真有效!!!!!

@codefalling 因为 brew 装 Python 的原因。咻,终于解决了。


#6

可以看看 *anaconda-mode* buffer 里面的提示信息


#7
Collecting anaconda_mode==0.1.2
  Using cached anaconda_mode-0.1.2-py2-none-any.whl
Collecting service-factory>=0.1.2 (from anaconda_mode==0.1.2)
Collecting jedi>=0.9.0 (from anaconda_mode==0.1.2)
  Using cached jedi-0.9.0-py2.py3-none-any.whl
Collecting six (from service-factory>=0.1.2->anaconda_mode==0.1.2)
  Using cached six-1.10.0-py2.py3-none-any.whl
Installing collected packages: six, service-factory, jedi, anaconda-mode
Successfully installed anaconda-mode jedi service-factory-0.1.2 six-1.10.0
e[0;31mOut[e[1;31m1e[0;31m]: e[0m0
anaconda_mode port 9000

有效!十分感谢!


#8

能不能,把您的配置,发出来让我参考下呀? 我都折腾了好久,都没有效果。。。:disappointed:


#9

我没有改动 spacemacs 的配置,只是用 pip 正确安装 anaconda-mode 就好了。


#10

修改 ~/.pydistutils.cfg 很危险,它会导致你的 python 在用 pip 安装 package 的时候,默认安装在 /lib/python2.7/site-packages 目录下面,跟 homebrew 原来安装的 /usr/local/lib/python2.7/site-packages 不一样。。。 我被这个坑到了。

我把这个文件删除之后,重新用 homebrew 安装 python 之后,anaconda-mode 也自动安装好了,并无任何异常。

暂时不清楚是 anaconda-mode upstream fix 了,还是我之前有安装 anaconda-mode 的原因。


#11

感谢,根据提示信息升级了jedi版本,解决了问题