Джедай Emacs Python внезапно выходит из строя

Я не использовал emacs для кодирования на python последние две недели, и к тому времени все было идеально, моя установка работала отлично, включая jedi.

Два дня назад я установил virtualenvwrapper в python (pip install virtualenvwrapper), и это все, что изменилось за две недели до сегодняшнего дня в моей установке python. Ничего не изменилось в моей установке/настройке 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. Кстати, epc, argparse, jedi и virtualenv в питоне уже, конечно, установлены.

2- Я где-то читал (не помню где), что пакет jedi на melpa не обновляется. Мне это показалось странным, но я решил напрямую загрузить jedi, а также python-environment с github по адресу: 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). Затем я запускаю 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

Подводя итог, можно сказать, что на данном этапе ничего не изменилось в моем файле .emacs или каталоге .emacs.d по сравнению с исходной установкой.

Все изменения, внесенные в мою установку пакета Python за последние два дня, — это просто установка virtualenvwrapper. На этом этапе я совсем потерялся. Мы очень ценим ЛЮБУЮ помощь.

Спасибо заранее за ваше время.


person Javier    schedule 01.07.2015    source источник
comment
Похоже на проблему с Python 2.7.10. github.com/Homebrew/homebrew/issues/40241   -  person syohex    schedule 02.07.2015
comment
Привет сёхекс. Спасибо за помощь. На самом деле при установке virtualenvwrapper он автоматически обновился до 2.7.10, так что наверняка может быть так. Emacs+python доставил мне много головной боли! :) . В конечном итоге я перейду к возвышенному. В любом случае, спасибо!   -  person Javier    schedule 03.07.2015
comment
У меня была аналогичная проблема с этим некоторое время назад. Проблема заключалась в том, что Python не смог найти мою установку jedi. Проверьте, работает ли веревка в emacs. Его можно установить с помощью pip так же, как и jedi. Если это работает, просто переместите пакет jedi в тот же каталог, что и верёвка. Вот так я все-таки решил проблему.   -  person Andrew Winterbotham    schedule 06.07.2015
comment
Я решил перейти на возвышенный из-за sublimeREPL, который позволяет прекрасное взаимодействие возвышенного текста + IPython. Затем обнаружите, что это взаимодействие не работает с версиями IPython 3.... мир текстовых редакторов может быть болезненным...   -  person Javier    schedule 06.07.2015