我已经按照文档上安装了所有 pip 依赖,曾经手动 run-python 之后能出来了,后来配置了一些前端设置后 run-python 也不行了,现在按 TAB 试图自动补全会导致 Emacs 卡住,需要 Ctrl-g 才能终止。
.spacemacs 配置文件放到 gist 了:.spacemacs.el · GitHub
新人,求帮助!
我已经按照文档上安装了所有 pip 依赖,曾经手动 run-python 之后能出来了,后来配置了一些前端设置后 run-python 也不行了,现在按 TAB 试图自动补全会导致 Emacs 卡住,需要 Ctrl-g 才能终止。
.spacemacs 配置文件放到 gist 了:.spacemacs.el · GitHub
新人,求帮助!
需要裝jedi,可參考我的配置:
Python development configuration is quite easy. =elpy= is used here:
(elpy-enable) (setq elpy-rpc-backend “jedi”) ;;(setq jedi:complete-on-dot t)
;; prevent redundant intent in using yasnippets (add-hook 'python-mode-hook '(lambda () (setq yas-indent-line nil))) Following python package is required according to elpy mannual:
pip install rope pip install jedi
pip install flake8
pip install importmagic
pip install autopep8
pip install yapf
pip install virtualenv
jedi 是已经安装过了,也升级到最新的试过了。应该是配置的问题,因为手动 run-python 是可以的。
怎么是手动run-python. 我的这个也是,补全时而能能用,时而不能用.
他的帖子已经是两年前的了,anaconda jedi 都更新过多次了,他的问题跟你的问题很可能不同。
嗯嗯,多谢.我是用了pyenv环境的编译器后自动补全完全没有了.以前没有过装pyenv的时候自动补全是可以用的.但是编译运行是用不了的.好奇怪.我把所有的包在pyenv环境下也安装过了.
除了增加了python layer,也没有做其他配置.mac系统.看有的帖子说的brew install python问题,但是帖子也是很久以前的.
spacemacs 最近动作很大,好像有一些环境变量的问题还没有解决。不过我这里补全用着还挺好。我在windows下用的虚拟环境。jedi service-factory 都是在虚拟环境里安装的。
上次brew更新了emacs26的时候,一块更新了spacelpa最新的develop分支,我刚在论坛上找到了别的帖子,发现是一样的.就是系统库比如os. sys这些补全是没有问题的.但是第三方的库,比如numpy,tensorflow这些库现在是补全不了.应该是我环境问题.我在没装pyenv之前,这些库的补全还是可以用的.我没有用Python虚拟环境.装了pyenv之后spacemacs自己默认的python解释器就是~/.pyenv下的.
我觉得这个问题应该不难解决,因为是 emacs 设置的问题。你可以看看 Python mode 下 company-backends
的值,先把 company 的问题排除。然后再检查 anaconda-mode
是否有问题
我所有包都是用的最新的,spacemacs 用的 develop 分支,也是最新的
另外,注意 Anaconda-mode 刚开始读取 numpy 模块时会有点延迟,可能有个两三秒,那之后就快了。
查看python-mode下的backends是怎么查看.我查看了anaconda-mode是没有报错. 然后我更新了一下develop分支,然后直接启动报错:
Error (use-package): python/:init: Symbol’s function definition is void: spacemacs//python-setup-shell
用 describe-variable
查看 company-backends
变量的值
更新完 spacemacs 还需要更新一下 dotspacemacs 文件,用 SPC f e D
命令 (ediff)更新
嗯,看样子是没有问题,感觉还是 Python 环境没有设置好。
我如果不在虚拟环境内启动 emacs 也是不行
嗯嗯,我也觉得可能是这类问题,就是python自己原生的包补全是没有问题的.自己抓的第三方包不能自动补全.明天我再看看.早些休息.
这是两种不同的补全。自带补全貌似只能先交互式运行,再补全?company 补全则不需要,只要输入就可以自动补全。这两种很容易区分, spacemacs 中的 company 默认为 idle 时间补全,不是 tab 补全。
如果你喜欢前一种的话,为什么不试试 lpy?对交互式运行方式支持很好,也可以更好地对 python process 进行管理。你可以把它理解成 emacs 中的 ipython notebook
spacemacs里面有个ipython-notebook的package,前面用过.但是这个package有个坑爹的问题,就是if语句for语句的缩进问题. 如果已经在for循环之外写东西.保存后,会把写在for循环之外的内容全部拉到for循环里面去了. 那时候主要是为了在ipython-notebook里面用matplotlib显示的功能.因为不喜欢在浏览器里面写代码,不能用vim的编辑功能感觉很费劲.对el不怎么懂,也不会fix bug.所以都很久没有用.都在*.py环境中写代码.
你说的是 ein,那个包我也不推荐。我推荐的是 lpy,ivy 的作者 abo-abo 写的 。相关的讨论可以看看论坛里的帖子,试一下你肯定不会后悔。