Оболочка Emacs Inferior Python показывает сообщение отправки с каждой командой python-shell-send-region

Я использую подчиненную оболочку Python в OS X (El Capitan), и каждый раз, когда я отправляю фрагмент кода процессу Python (используя C-c C-r, который привязан к python-shell-send-region), я получаю такое сообщение в оболочке Python:

>>> import codecs, os;
    __pyfile = codecs.open('''/var/folders/6j/g9hcs1s17g1dgxr3p_m04rq80000gn/T/py5013kfY''', encoding='''utf-8''');
    __code = __pyfile.read().encode('''utf-8''');
    __pyfile.close();
    os.remove('''/var/folders/6j/g9hcs1s17g1dgxr3p_m04rq80000gn/T/py5013kfY''');
    exec(compile(__code, '''/Users/user/Desktop/sample.py''', 'exec'));

Я бы хотел, чтобы это сообщение не отображалось при каждом вызове команды. Та же версия Emacs в Linux (вместе с файлом python.el) не имеет этой проблемы. Шаблон сообщения определен в python-shell-send-file функции (в python.el файле), что само по себе вызывает недоумение, поскольку я не вижу, как эта функция вызывается, когда я вызываю python-shell-send-region. Для первого запуска я вызываю интерпретатор Python (версия 2.7.10) с помощью следующей команды

/usr/bin/python -i

но он также ведет себя так же с другими интерпретаторами python (установленными через brew). Я использую Emacs 24.5.1 (снова установлен через brew). Единственная конфигурация режима Python, которую я использую в .emacs, связана с шириной вкладки:

(add-hook 'python-mode-hook
      (lambda ()
        (setq indent-tabs-mode t)
        (setq tab-width 2)
        (setq python-indent 2)))

Любая помощь или предложение приветствуются.

Правка и возможное решение:

(Я нашел этот https://github.com/jorgenschaefer/elpy/issues/1307 ):

$ easy_install-3.6 gnureadline
$ cd /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload
$ mv readline.cpython-36m-darwin.so readline.cpython-36m-darwin.so.bak

Если вы получаете сообщение об ошибке при установке gnureadline, fatal error: 'stdio.h' file not found, попробуйте xcode-select --install.


person s.yadegari    schedule 15.11.2015    source источник
comment
Я нашел обходной путь для этого раздражения. ipython, похоже, не вызывает у меня такой проблемы. Вы можете установить python-shell-interpreter на ipython (что-то вроде этого в вашем .emacs): (setq python-shell-interpreter "ipython2")   -  person s.yadegari    schedule 15.12.2016
comment
Это решение (issues / 1307) работает для меня с небольшими изменениями. easy_install-3.6 => pip3 install 3.6 => 3.7 36m => 37m   -  person David Jung    schedule 19.07.2018


Ответы (1)


$ source ./your/venv/activate
$ pip install pyreadline

Должен работать автоматически с Python. Ранее в этом году я столкнулся с аналогичной проблемой в Windows 10, установив pyreadline, поскольку зависимость разработчика решила ее.

person skullgoblet1089    schedule 13.01.2020