过去两周我没有使用emacs进行python编码,到那时它完美无缺,我的设置完美无缺,包括jedi。
两天前我在python(virtualenvwrapper
)中安装了pip install virtualenvwrapper
,这在我的python安装中已经从两周到今天发生了变化。 Nothing 在我的emacs安装/设置中完全没有变化,绝对没有。今天,我将在两周内第一次开始使用python进行编码,当我在终端中键入emacs test.py
时,我在emacs
窗口中获得了以下错误消息:
Error (jedi): Failed to start Jedi EPC server.
*** You may need to run "M-x jedi:install-server". ***
This could solve the problem especially if you haven't run the command yet
since Jedi.el installation or update and if the server complains about
Python module imports.
deferred error : (error Server may raise an error : Traceback (most recent call last):
File "/Users/javier/.emacs.d/.python-environments/default/bin/jediepcserver", line 5, in <module>
from pkg_resources import load_entry_point
File "/Users/javier/.emacs.d/.python-environments/default/lib/python2.7/site-packages/pkg_resources/__init__.py", line 21, in <module>
import io
File "//anaconda/lib/python2.7/io.py", line 51, in <module>
import _io
ImportError: dlopen(/Users/javier/.emacs.d/.python-environments/default/lib/python2.7/lib-dynload/_io.so, 2): Symbol not found: __PyErr_ReplaceException
Referenced from: /Users/javier/.emacs.d/.python-environments/default/lib/python2.7/lib-dynload/_io.so
Expected in: dynamic lookup
这是我一年前安装jedi
的方式:
1 - 我首先按照jedi installation中的说明操作。顺便说一下,epc, argparse, jedi
和virtualenv
已经安装在python中了。
2 - 我在某地(我不记得在哪里)读到melpa的jedi包没有更新。这听起来很奇怪,但我决定直接从github下载jedi
和python-environment
:jedi-github和python-environment-github。我将它们放在~/.emacs.d/emacs-jedi/
和~/.emacs.d/emacs-python-environment/
3 - 然后通过执行以下操作设置jedi
:
;;Standard Jedi.el setting (read readme-jedi at .emacs.d/)
(add-to-list 'load-path "~/.emacs.d/emacs-jedi/")
(add-to-list 'load-path "~/.emacs.d/emacs-python-environment/")
(add-hook 'python-mode-hook 'jedi:setup)
(setq jedi:complete-on-dot t)
4 - 我在emacs上运行:M-x jedi:install-server
完成了!这对我来说在一年之内一直有用到今天!
当然,作为解决此问题的第一次尝试,我完全按照错误消息的建议执行并再次运行M-x jedi:install-server
。然后我得到了以下错误:
Running: pip install --upgrade /Users/javier/.emacs.d/emacs-jedi/...Done
deferred error : (error Process [/Users/javier/.emacs.d/.python-environments/default/bin/pip] exited abnormally : Traceback (most recent call last):
File "/Users/javier/.emacs.d/.python-environments/default/bin/pip", line 7, in <module>
from pip import main
File "/Users/javier/.emacs.d/.python-environments/default/lib/python2.7/site-packages/pip/__init__.py", line 13, in <module>
from pip.utils import get_installed_distributions, get_prog
File "/Users/javier/.emacs.d/.python-environments/default/lib/python2.7/site-packages/pip/utils/__init__.py", line 14, in <module>
import zipfile
File "//anaconda/lib/python2.7/zipfile.py", line 6, in <module>
import io
File "//anaconda/lib/python2.7/io.py", line 51, in <module>
import _io
ImportError: dlopen(/Users/javier/.emacs.d/.python-environments/default/lib/python2.7/lib-dynload/_io.so, 2): Symbol not found: __PyErr_ReplaceException
Referenced from: /Users/javier/.emacs.d/.python-environments/default/lib/python2.7/lib-dynload/_io.so
Expected in: dynamic lookup
在此之后,以及其他一些尝试,我决定重新安装一切,只需使用melpa。 (即jedi-installation之后)。然后我运行M-x jedi:install-server
并得到一个非常类似的错误信息:
Making completion list...
Running: pip install --upgrade /Users/javier/.emacs.d/elpa/jedi-core-0.2.5/...Done
deferred error : (error Process [/Users/javier/.emacs.d/.python-environments/default/bin/pip] exited abnormally : Traceback (most recent call last):
File "/Users/javier/.emacs.d/.python-environments/default/bin/pip", line 7, in <module>
from pip import main
File "/Users/javier/.emacs.d/.python-environments/default/lib/python2.7/site-packages/pip/__init__.py", line 13, in <module>
from pip.utils import get_installed_distributions, get_prog
File "/Users/javier/.emacs.d/.python-environments/default/lib/python2.7/site-packages/pip/utils/__init__.py", line 14, in <module>
import zipfile
File "//anaconda/lib/python2.7/zipfile.py", line 6, in <module>
import io
File "//anaconda/lib/python2.7/io.py", line 51, in <module>
import _io
ImportError: dlopen(/Users/javier/.emacs.d/.python-environments/default/lib/python2.7/lib-dynload/_io.so, 2): Symbol not found: __PyErr_ReplaceException
Referenced from: /Users/javier/.emacs.d/.python-environments/default/lib/python2.7/lib-dynload/_io.so
Expected in: dynamic lookup
总而言之,在此阶段, Nothing 在原始安装的.emacs
文件或.emacs.d
目录中发生了变化。
在过去两天内对我的python软件包安装所做的所有更改都只是virtualenvwrapper
的安装。在这个阶段,我很失落。非常感谢 ANY 帮助。
提前感谢您的时间。