Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 27, 2012 19:41:21

herbuz
Зарегистрирован: 2012-10-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

python-mode emacs и python 3

Я так понимаю у 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)

Офлайн

#2 Окт. 27, 2012 22:28:45

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

python-mode emacs и python 3

пользуюсь этим, вполне себе дружат. Тебе не нравится, что этот execfile подсвечивается?

Офлайн

#3 Окт. 27, 2012 22:52:11

adray
Зарегистрирован: 2012-09-15
Сообщения: 123
Репутация: +  18  -
Профиль   Отправить e-mail  

python-mode emacs и python 3

У меня c дефолтным python.el не получилось. pymacs загружается, но не работает, в rope - синтаксические ошибки. Пока все сыро, приходится в режиме python2 писать.

sergeek, completion работает?

Отредактировано adray (Окт. 27, 2012 22:57:58)

Офлайн

#4 Окт. 27, 2012 23:10:31

herbuz
Зарегистрирован: 2012-10-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

python-mode emacs и python 3

sergeek, спасибо за ответ!
Я, наверное, неправильно сделал, что не уточнил - речь идет о python-mode.el - суть, видимо, в том, что в python3 нет функции execfile, а модуль python-mode.el им оперирует, в результате чего получаю ошибку от emacs-a.
Я видел споры о том что круче pyhon.el или python-mode.el и вроде как все склоняются в сторону последнего.
Мне не нравится, что когда нажимаю в емаксе C-c C-c мне выдается ошибка с execfile. И скрипты не выполняются, даже самые простые..типо print('Hello World!')

Офлайн

#5 Окт. 28, 2012 09:24:37

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

python-mode emacs и python 3

adray
да работает.
вот этот, вместе с ropemacs и ido-mode дают отличный комплишн
python.el который я указал это не дефолтный, их три сейчас. Для 3 ветки он самый фичастый вроде бы.
herbuz
питонмод не оперирует ими он же на лиспе написан, у тебя скорей всего интерпретатор от второго питона запускается по дефолту. Там должна быть где-то переменная в которой указывается какой шелл запустить. Или покажи выхлоп трейсбека если не получится, может смогу помочь

https://bugs.launchpad.net/python-mode/+bug/450552
это трехлетний баг, там написано, что он пофикшен, патчить не нужно, достаточно скачать свежую версию если проблема все таки в этом

Отредактировано sergeek (Окт. 28, 2012 12:59:28)

Офлайн

#6 Окт. 28, 2012 10:43:58

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

python-mode emacs и python 3

adray
У меня c дефолтным python.el не получилось. pymacs загружается, но не работает, в rope - синтаксические ошибки.
python.el и pymacs ничего не тянут друг с друга, у меня, по крайней мере. Pymacs на тройке работает, модули загружает ( правда там есть баг с кодировкой для 3.2, но есть патч, его фиксящий), но с rope, да синтаксис еррор, не понятно почему, ведь py3k ветка имеется, сейчас как раз пилю это. А в rope-mode разве есть разница от какого питона его запускать, я его фичи не изучал пока основательно, но мне кажется там нет ничего ветко-специфичного, а минус только в том что свои скрипты на python3 через этот pymacs не запустишь если хочешь rope-mode

Отредактировано sergeek (Окт. 28, 2012 10:45:03)

Офлайн

#7 Окт. 28, 2012 12:03:51

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

python-mode emacs и python 3

sergeek
но с rope, да синтаксис еррор
с ropemacs вернее. Таки вылечилось патчем 2to3, и заменой одной строчки:

/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)

Офлайн

#8 Окт. 28, 2012 20:18:36

herbuz
Зарегистрирован: 2012-10-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

python-mode emacs и python 3

sergeek
herbuzпитонмод не оперирует ими он же на лиспе написан, у тебя скорей всего интерпретатор от второго питона запускается по дефолту. Там должна быть где-то переменная в которой указывается какой шелл запустить. Или покажи выхлоп трейсбека если не получится, может смогу помочь
У меня стоит только третий питон. При вызове интерпретатора С-с ! запускает тоже третий питон,
Вывод
Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:55:48) on win32
Type “help”, “copyright”, “credits” or “license” for more information.

при попытке выполнить скрипт print('Hello world')(Выполняю C-c C-c)
Выдает:

Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
NameError: name ‘execfile’ is not defined

Возможно трабла из-за того, что путь C:\Python33\python а не скажем C:\Python33\python3, возможно на винде ведет себя не корректно!

Офлайн

#9 Окт. 29, 2012 09:04:01

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

python-mode emacs и python 3

хрен знает что этот 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
С-x C-e это команда выполняющая лисповое выражение, нужно перейти к концу выражения (между “;C-x C-e” и скобкой) и нажать это сочетание, если оно не забиндено то посмотреть M-x describe-function press-enter eval-last-sexp press-enter посмотреть хоткей для него.
В общем, если оба хелловорлда не выполняться лучше не показывать мне трассировку. Если выполняться то проблема, скорей всего, решаема легко

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version