LINUX.ORG.RU

[emacs] Интерграция с интерпретатором python


1

2

Вот кусок из .emacs:

(require 'ipython)
(setq py-default-interpreter "ipython")
(setq py-python-command-args '("--pylab=qt" "--colors=LightBG"))

(global-set-key [C-tab] 'ipython-complete)

(require 'lambda-mode)
(add-hook 'python-mode-hook #'lambda-mode 1)

(setq lambda-symbol (string (make-char 'greek-iso8859-7 107)))

(require 'anything)
(require 'anything-ipython)
(when (require 'anything-show-completion nil t)
   (use-anything-show-completion 'anything-ipython-complete
                                 '(length initial-pattern)))

Проделал патчинг ipython.el как здесь.

В *Messanges* выводит это:

File mode specification error: (void-variable py-mode-map)

В *Python* это:

Traceback (most recent call last):                                                                                             
  File "<string>", line 1, in <module>                                                                                         
NameError: name 'olors' is not defined                                                                                         
>>>

Комплит не работает.

★★★★★

Православному емаксу стыдно связываться с позорной скриптовой поделкой. И тебе тоже дожно быть стыдно.

lovesan

anonymous ()

Оно ещё и для python-mode.el, которое нехорошее. Вобщем видимо мало кому нужно. Да и попробуй автокомплит подругому сделать. Где-то в инете валялся архив со всеми необходимыми модулями и конфигами для питона. Где-то была статья как сделать автокомплит через rope и т.д.

Bad_ptr ★★★★★ ()

Поделитесь, пожалуйста, кто-то реально рабочей конфигурацией Emacs для разработки на Python.
Я как ни пытался это осилить так и не получилось, все посты в инете о старых версиях библиотек и с новыми не работают.

urxvt ★★★★★ ()
Ответ на: комментарий от Bad_ptr

Пробовал и так: в .emacs:

(add-to-list 'load-path "/usr/share/emacs/site-lisp/emacs-for-python") ;; tell where to load the various files
(require 'epy-setup) ;; It will setup other loads, it is required!
(require 'epy-python) ;; If you want the python facilities [optional]
(require 'epy-completion) ;; If you want the autocompletion settings [optional]
(require 'epy-editing) ;; For configurations related to editing [optional]
(require 'epy-bindings) ;; For my suggested keybindings [optional]
(setenv "PYMACS_PYTHON" "python2.7")

В *Pymacs*:

 File "/usr/share/emacs/site-lisp/emacs-for-python/python-libs/Pymacs/__init__.py", line 29, in <module>                      
    from pymacs import Let, lisp                                                                                               
ImportError: No module named pymacs

Хотя пакет установлен и импорт модуля ошибки не вызывает.

ados ★★★★★ ()
Ответ на: комментарий от anonymous

Я хотел немного не то. Я хотел бы интегрировать с python-mode автодополнение, яснипетс, можно еще какие-то плюшки. Но это главное.

urxvt ★★★★★ ()
Ответ на: комментарий от Bad_ptr

В общем комплит работал хреново, но ещё работала интеграция с интерпретатором.

Покрутил я с пакетам rope в системе и теперь ничего не работает:

Traceback (most recent call last):
  File "/usr/lib/python2.7/site.py", line 563, in <module>
    main()
  File "/usr/lib/python2.7/site.py", line 545, in main
    known_paths = addusersitepackages(known_paths)
  File "/usr/lib/python2.7/site.py", line 278, in addusersitepackages
    user_site = getusersitepackages()
  File "/usr/lib/python2.7/site.py", line 253, in getusersitepackages
    user_base = getuserbase() # this will also set USER_BASE
  File "/usr/lib/python2.7/site.py", line 243, in getuserbase
    USER_BASE = get_config_var('userbase')
  File "/usr/lib/python2.7/sysconfig.py", line 520, in get_config_var
    return get_config_vars().get(name)
  File "/usr/lib/python2.7/sysconfig.py", line 419, in get_config_vars
    _init_posix(_CONFIG_VARS)
  File "/usr/lib/python2.7/sysconfig.py", line 282, in _init_posix
   _parse_makefile(makefile, vars)
  File "/usr/lib/python2.7/sysconfig.py", line 195, in _parse_makefile
    _variable_rx = re.compile("([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)")
AttributeError: 'module' object has no attribute 'compile'

ados ★★★★★ ()
Ответ на: комментарий от ados

Покрутил я с пакетам rope в системе

Да вообще не ставь ты в систему эту фигню. Качай отсюда https://github.com/gabrielelanaro/emacs-for-python там уже всё в куче.
Вот эту строчку только аналогично добавь в epy-init.el
(setenv «PYMACS_PYTHON» «python2.7»)
И ещё(если ты вдруг не заметил :)) автокомплит там работает только когда в директории, где ты редактируешь файл, есть директория .ropeproject/ с config.py . Вобщем если открываешь файл, а в нём нету автокомплита то пишешь, например, sys. дальше жмёшь M-/ (Alt-/), тебя спрашивают про создание этого самого ропепроекта, жмешь ентер, всё — теперь атокомплит должен работать.
Хотя, конечно, да, вроде он не всё и не всегда комплитит и ещё нету сортировки списка дополнения...

Bad_ptr ★★★★★ ()
Ответ на: комментарий от Bad_ptr

В общем забил я на пакет с AUR'а, и комплит какой-никакой заработал. Спасибо.

ados ★★★★★ ()
Ответ на: комментарий от Bad_ptr

Отладка

Да, действительно, emacs-for-python все делает хорошо. Только я не понял, как в нем наладить интеграцию с отладчиком (pdbtrack?).

Tyrn ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.