很多py插件都依赖jedi
,flake8
等等。
插件的README上面都写着
pip install jedi
pip install flake8
这些库安装的地方会在python2.7/site-packages里面,貌似各种插件都默认从2.7中寻找backend,其中涉及到读取哪个elisp变量吗?能不能改成python3?
背景:因为最近anconda-mode老是报错server error,花半天找到个类似的问题,发现jedi作者早就修复了,可是我的各种插件都是最新的啊,pip也会时期性的自动更新。后来才发现,我之前图省事alias pip=pip3
,alias python=python3
了,我以为大家默认用py3了:(,作者写pip的意思也是代指pip3,可是anconda-mode还是从python2.7/site-packages里面找依赖,而我py2的库早就没在更新了…
我觉得还是用虚拟环境吧,会省心很多。如果是Linux强烈推荐使用 pyenv 配合虚拟环境。我在Windows系统中用虚拟环境都很开心。
1 个赞
建议先安装 pyenv,再安装虚拟环境。然后你会体验到什么是干净地安装 python
1 个赞
最好不要太新,比如jedi
现在只支持python3.5
以及以下,实测python3.7无法使用jedi
。
啊啊,用了一个晚上,体验超棒
只恨不能早点知道这玩意儿,省多少事啊
非常理解,之前也曾被 Python 环境折磨。
虽然我的回复和你最初的问题不完全匹配,但是你的问题已解决,所以麻烦勾选一下。
请问怎么把系统已有的python加入到pyenv中?我机器安装有3个不同版本的python,pyenv只显示一个system
是不是先安装了python,再安装pyenv就不能把原来的python版本加入进去了?要重新安装python?
一般地可以设置如下几项来控制emacs调用哪个python环境:
(setq my-python-env "/home/YOURNAME/anaconda3/envs/EXAMPLE_ENV/")
(setq python-shell-virtualenv-root my-python-env)
(setq python-environment-directory (concat my-python-env "/bin"))
(setq python-shell-interpreter (concat my-python-env "/bin/python"))
比如我使用anaconda建立了很多虚拟环境,有py3tf1.1
、py2tf1.0
等等。那么我可以设置上面的my-python-env
指向对应的虚拟环境目录:
(setq my-python-env "/home/libniwtr/anaconda3/envs/py3tf1.1/") ;;; 使用py3tf1.1环境
以上的这些变量可以动态修改,只需关闭jedi-mode
再打开就行了。