Форум сайта python.su
Я так понимаю у python-mode большие проблемы при работе с python 3.
Путь до питона
C:\Python33\python
Вот тут рекомендуют принять патч на python-mode.el, но то ли он устарел, то ли выполняю неверно. Когда пытаюсь принять патч получаю
Hunk #1 FAILED at 368.
Hunk #2 succeeded at 14311 with fuzz 2 (offset 12962 lines).
Вся проблема заключается в том что в pyhon 3 нет функции execfile, которая используется в python-mode.
Кто-нибудь уже подружил python 3 и emacs?
Проблема идентична
https://bugs.launchpad.net/python-mode/+bug/450552
Отредактировано herbuz (Окт. 27, 2012 19:48:07)
Офлайн
пользуюсь этим, вполне себе дружат. Тебе не нравится, что этот execfile подсвечивается?
Офлайн
У меня c дефолтным python.el не получилось. pymacs загружается, но не работает, в rope - синтаксические ошибки. Пока все сыро, приходится в режиме python2 писать.
sergeek, completion работает?
Отредактировано adray (Окт. 27, 2012 22:57:58)
Офлайн
sergeek, спасибо за ответ!
Я, наверное, неправильно сделал, что не уточнил - речь идет о python-mode.el - суть, видимо, в том, что в python3 нет функции execfile, а модуль python-mode.el им оперирует, в результате чего получаю ошибку от emacs-a.
Я видел споры о том что круче pyhon.el или python-mode.el и вроде как все склоняются в сторону последнего.
Мне не нравится, что когда нажимаю в емаксе C-c C-c мне выдается ошибка с execfile. И скрипты не выполняются, даже самые простые..типо print('Hello World!')
Офлайн
adray
да работает.
вот этот, вместе с ropemacs и ido-mode дают отличный комплишн
python.el который я указал это не дефолтный, их три сейчас. Для 3 ветки он самый фичастый вроде бы.
herbuz
питонмод не оперирует ими он же на лиспе написан, у тебя скорей всего интерпретатор от второго питона запускается по дефолту. Там должна быть где-то переменная в которой указывается какой шелл запустить. Или покажи выхлоп трейсбека если не получится, может смогу помочь
https://bugs.launchpad.net/python-mode/+bug/450552это трехлетний баг, там написано, что он пофикшен, патчить не нужно, достаточно скачать свежую версию если проблема все таки в этом
Отредактировано sergeek (Окт. 28, 2012 12:59:28)
Офлайн
adraypython.el и pymacs ничего не тянут друг с друга, у меня, по крайней мере. Pymacs на тройке работает, модули загружает ( правда там есть баг с кодировкой для 3.2, но есть патч, его фиксящий), но с rope, да синтаксис еррор, не понятно почему, ведь py3k ветка имеется, сейчас как раз пилю это. А в rope-mode разве есть разница от какого питона его запускать, я его фичи не изучал пока основательно, но мне кажется там нет ничего ветко-специфичного, а минус только в том что свои скрипты на python3 через этот pymacs не запустишь если хочешь rope-mode
У меня c дефолтным python.el не получилось. pymacs загружается, но не работает, в rope - синтаксические ошибки.
Отредактировано sergeek (Окт. 28, 2012 10:45:03)
Офлайн
sergeekс ropemacs вернее. Таки вылечилось патчем 2to3, и заменой одной строчки:
но с rope, да синтаксис еррор
/usr/local/lib/python3.2/dist-packages/ropemacs-0.7-py3.2.egg/ropemacs/__init__.py line 309 - if hasattr(callback, 'im_func'): + if hasattr(callback, '__func__'):
Отредактировано sergeek (Окт. 28, 2012 12:05:26)
Офлайн
sergeekУ меня стоит только третий питон. При вызове интерпретатора С-с ! запускает тоже третий питон,
herbuzпитонмод не оперирует ими он же на лиспе написан, у тебя скорей всего интерпретатор от второго питона запускается по дефолту. Там должна быть где-то переменная в которой указывается какой шелл запустить. Или покажи выхлоп трейсбека если не получится, может смогу помочь
Офлайн
хрен знает что этот execfile делает в exec-buffer. Поставил у себя этот ваш python-mode.el, хелловорлд выполнил для 3.3. Точно отсюда брал?
можно вот что попробовать:
перейти в буфер *scratch*
вставить это:
(setq shell "python3.3"
hello-world "print('hello world')") ;C-x C-e
(py-shell shell) ;C-x C-e должен появится шелл если ошибка заменить python3.3 на python3 или python
(py-execute-string hello-world) ;C-x C-e
(run-python shell) ;C-x C-e должен появится шелл если ошибка заменить python3.3 на python3 или python или убрать вообще
(python-send-string hello-world) ;C-x C-e
Офлайн