pymacs: Общий вопрос и проблема с установкой

Я пытаюсь настроить emacs для разработки на Python.

Из того, что я прочитал, рекомендуется использовать python-mode.el, а не python.el по умолчанию из Emacs 22.3. Итак, я отправляюсь в новое приключение.

Насколько я понимаю, у python-mode есть несколько зависимостей, поэтому мне нужно установить rope, ropemode и ropemacs. Затем мне нужно установить pymacs.

В: это правильно?

Теперь это мой новый .emacs:

(custom-set-variables
  ;; custom-set-variables was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 '(inhibit-startup-screen t)
 '(tab-width 4))
(custom-set-faces
  ;; custom-set-faces was added by Custom.
  ;; If you edit it by hand, you could mess it up, so be careful.
  ;; Your init file should contain only one such instance.
  ;; If there is more than one, they won't work right.
 )

(setq emacs-config-path "~/.emacs.d/")
(setq base-lisp-path "~/.emacs.d/site-lisp/")
(setq site-lisp-path (concat emacs-config-path "/site-lisp"))
(defun add-path (p)
  (add-to-list 'load-path (concat base-lisp-path p)))

(add-path "") 
(add-to-list 'load-path "~/.emacs.d")

(require 'psvn)

;; python-mode
;;
(setq auto-mode-alist (cons '("\\.py$" . python-mode) auto-mode-alist))
(setq interpreter-mode-alist (cons '("python" . python-mode) interpreter-mode-alist))
(autoload 'python-mode "python-mode" "Python editing mode." t)


(setq pymacs-load-path '(   "~/.emacs.d/site-lisp/rope"
                            "~/.emacs.d/site-lisp/ropemode"
                            "~/.emacs.d/site-lisp/ropemacs"))


(setq interpreter-mode-alist
      (cons '("python" . python-mode)
        interpreter-mode-alist)
      python-mode-hook
      '(lambda () (progn
            (set-variable 'py-indent-offset 4)
            (set-variable 'py-smart-indentation nil)
            (set-variable 'indent-tabs-mode nil)
            ;;(highlight-beyond-fill-column)
                    (define-key python-mode-map "\C-m" 'newline-and-indent)
            (pabbrev-mode)
            (abbrev-mode)
     )
      )
)


;; pymacs
(autoload 'pymacs-apply "pymacs")
(autoload 'pymacs-call "pymacs")
(autoload 'pymacs-eval "pymacs" nil t)
(autoload 'pymacs-exec "pymacs" nil t)
(autoload 'pymacs-load "pymacs" nil t)

;; Search local path for emacs rope
;;

;; enable pymacs
;; 
(require 'pymacs)
(pymacs-load "ropemacs" "rope-")

Теперь, когда я запускаю emacs, я получаю следующее сообщение об ошибке:

("C:\\opt\\emacs-22.3\\bin\\emacs.exe")
Loading encoded-kb...done
Loading regexp-opt...done
Loading easy-mmode...done
Loading wid-edit...done
Loading edmacro...done
Loading derived...done
Loading advice...done
Loading cl-macs...done
Loading byte-opt...done


An error has occurred while loading `c:/opt/cygwin/home/akong/.emacs':

File error: Cannot open load file, pymacs

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the `--debug-init' option to view a complete error backtrace.

For information about GNU Emacs and the GNU system, type C-h C-a. [2 times]

Чтобы немного усложнить задачу:

По работе мне приходится использовать python 2.4, но на моем компьютере установлен python 2.6. Но очевидно, что rope не любит 2.4, поэтому я не запускал setup.py. Я распаковываю эти пакеты и помещаю их в папку ~ / .emacs.d / site-lisp. По умолчанию, если python вызывается в командной строке, это исполняемый файл python 2.4.

В: Как я могу успешно загрузить pymacs?


person Anthony Kong    schedule 03.07.2009    source источник


Ответы (3)


Я до сих пор никогда не использовал pymacs, но одна вещь, которая бросается в глаза, когда я смотрю на ваш .emacs, заключается в том, что вы, по-видимому, добавили каталог pymacs не в emacs load-path, а только в pymacs:

(setq pymacs-load-path '( "~/.emacs.d/site-lisp/rope"
                          "~/.emacs.d/site-lisp/ropemode"
                          "~/.emacs.d/site-lisp/ropemacs"))

Возможно, вам также понадобится что-то вроде:

(add-to-list 'load-path "~/.emacs.d/site-lisp/rope")
(add-to-list 'load-path "~/.emacs.d/site-lisp/ropemode")
(add-to-list 'load-path "~/.emacs.d/site-lisp/ropemacs")

(или где бы то ни было, pymacs.el), чтобы emacs мог найти файлы lisp. Также упоминается в документации pymacs.

2.4 Установите собственно Pymacs ... для части Emacs ...

Сейчас это обычно делается вручную. Сначала выберите в вашем Emacs load-path каталог, для которого у вас есть доступ на запись, и скопируйте файл pymacs.el в этот каталог.

person danielpoe    schedule 03.07.2009
comment
Увы, добавил строчки как рекомендовано, но не повезло. - person Anthony Kong; 03.07.2009
comment
а где тогда у вас pymacs.el? - person danielpoe; 03.07.2009
comment
Также проверьте переменную пути загрузки, если она содержит этот каталог (C-h v: путь загрузки). - person danielpoe; 03.07.2009
comment
Я не думаю, что вам нужен (add-to-list 'load-path "~/.emacs.d/site-lisp/rope") и тому подобное, потому что rope, ropemode и ropemacs - это пакеты Python, загружаемые через pymacs, поэтому им просто нужно быть в PYTHONPATH или pymacs-load-path. В каталоге ropemacs нет файла Emacs lisp. Обратите внимание, что нет (require 'ropemacs) или что-то в этом роде. - person tkf; 06.02.2012

Оказывается, я пропустил эти два:

(add-to-list 'load-path "~/.emacs.d/site-lisp/Pymacs-0.23")

Очевидно, мне нужно загрузить скрипт pymac.

И я установил env var PYMACS_PYTHON на python 2.6, потому что я использую python 2.4 в качестве интерпретатора python по умолчанию для работы.

person Anthony Kong    schedule 06.07.2009

Если пути отсутствуют, то это будет легко обнаружить в журнале запуска или по трассировке при запуске emacs. Если вы сомневаетесь, загрузите библиотеку M-x.

Я тоже получаю company-ropemacs, отказывающуюся загружаться с emacs 23 и emacs 24 после последних обновлений Debian Testing, что затем означает, что вы не можете сохранять файлы из-за крючков для сохранения веревки. Мне было бы интересно услышать от кого-нибудь, у кого это работает. company-ropemacs и python в целом с emacs уже некоторое время вызывают неудобства. Я намерен попытаться отладить его еще немного позже и тогда обновлю эту ветку.

person RichieHH    schedule 07.08.2010