Пожалуйста, помогите: pylint не работает с Emacs23 - PullRequest
4 голосов
/ 30 сентября 2010

Я пытаюсь использовать Pylint с Emacs в Windows XP.Моя версия Emacs - EmacsW32 23.1, pylint - 0.21.3 с Python 2.5.После easy_install pylint я добавил следующие строки в файл инициализации Emacs, скопированный из Emacs Wiki.

Когда я запускаю режим flymake для файла .py, я вижу, как flymake запускает проверку синтаксиса, состояние режима меняется на flymake *, а затем через несколько секунд возвращается к flymake.Но не сообщается об ошибке и синтаксическая ошибка не выделяет .

Я пытался использовать pylint в командной строке, и он работает с командой "pylint test.py" , сообщая об ошибках синтаксиса в том же файле.

Я даже пыталсяочистить мой файл .emacs, но это не поможет.

Может ли кто-нибудь помочь мне в этом?Большое спасибо.

(when (load "flymake" t)
  (defun flymake-pylint-init ()
    (let* ((temp-file (flymake-init-create-temp-buffer-copy
                       'flymake-create-temp-inplace))
       (local-file (file-relative-name
                    temp-file
                    (file-name-directory buffer-file-name))))
      (list "epylint" (list local-file))))

  (add-to-list 'flymake-allowed-file-name-masks
           '("\\.py\\'" flymake-pylint-init)))

Обновление вопроса: Я попробовал следующее в командной строке с "pylint" и "epylint".Значит ли это, что у эпилинта есть проблема?

C:\Projects>pylint test_lib.py
No config file found, using default configuration
************* Module test_lib
E: 13: invalid syntax

C:\Projects>epylint test_lib.py
'test_lib.py':1: [F] No module named 'test_lib.py'

C:\Projects>epylint
Traceback (most recent call last):
  File "C:\Python25\Scripts\epylint", line 5, in <module>
    pkg_resources.run_script('pylint==0.21.3', 'epylint')
  File "C:\Python25\Lib\site-packages\pkg_resources.py", line 489, in run_script

    self.require(requires)[0].run_script(script_name, ns)
  File "C:\Python25\Lib\site-packages\pkg_resources.py", line 1207, in run_script
    execfile(script_filename, namespace, namespace)
  File "c:\python25\lib\site-packages\pylint-0.21.3-py2.5.egg\EGG-INFO\scripts\epylint", line 3, in <module>
    epylint.Run()
  File "c:\python25\lib\site-packages\pylint-0.21.3-py2.5.egg\pylint\epylint.py", line 93, in Run
    lint(sys.argv[1])
IndexError: list index out of range

Ответы [ 3 ]

3 голосов
/ 01 октября 2010

Программа, вызываемая flymake, должна вернуть 0 errorlevel, иначе flymake считает, что возникли проблемы с вызовом подпроцессов.

Чтение этот ответ и эти патчи , мне удалось запустить flymake с помощью pylint:

В Windows, но вы можете сделать то же самое с Un * x, я создал командный файл pycheckers.bat (доступный в вашем PATH):

pylint -f parseable -r n --disable=C,R,I %1 %2 %3 %4 %5 %6 %7 %8 %9
exit /b 0

В моем .emacs я поместил эти строки:

(when (load "flymake" t)
  (defun flymake-pyflakes-init ()
    (let* ((temp-file (flymake-init-create-temp-buffer-copy
                       'flymake-create-temp-inplace))
           (local-file (file-relative-name
                        temp-file
                        (file-name-directory buffer-file-name))))
      (list "pycheckers"  (list local-file))))
  (add-to-list 'flymake-allowed-file-name-masks
               '("\\.py\\'" flymake-pyflakes-init)))

Теперь, когда я открываю файл .py, я делаю M-x flymake-mode, чтобы активировать его. Flymake находит мои ошибки и предупреждения Python без проблем.

Обратите внимание, что вы можете добавить другие инструменты в файл pycheckers.bat.

0 голосов
/ 17 декабря 2011

Вот мои два цента ...

(defun flymake-pylint-init ()
  (list python-python-command
        (list "-m" "pylint.lint" "-f" "parseable" buffer-file-name)))

(add-to-list 'flymake-allowed-file-name-masks
              '("\\.py\\'" flymake-pylint-init))

проверено на WinXP, linux, OS-X.

0 голосов
/ 30 сентября 2010

Я использую emacs22-nox в Linux, поэтому вам может понадобиться Google "font-lock-mode", чтобы понять, как это сделать на вашем компьютере. Сначала введите командную строку emacs, нажав Esc+x. Теперь вы можете ввести font-lock-mode и нажать Enter (командная строка находится внизу экрана). У меня была такая же проблема на одном из моих клиентских серверов. Их emacs по умолчанию не включал режим font-lock-mode. Надеюсь, это поможет.

...