2016-06-09 2 views
5

Я установил flycheck для Emacs Python на Ubuntu 15.04.Emacs: Как установить флажок на Python 3?

Однако при использовании инструмента он сообщает о ложных срабатываниях, таких как print(item, end=' '), неправильный синтаксис из-за end.

Я знаю, что это Python 3 синтаксис, и что ошибка синтаксиса вызывается flycheck настроен на Python 2.

Как установить flycheck на Python 3?

В документации по Github он не упоминает, поддерживает ли он Python 2 или 3 (только Python).

Также, если возможно, дайте мне подсказку, почему инструмент elpa не дает предложений, например. базовые типы Python.

Мой файл init.el здесь:

;; init.el --- Emacs configuration 

;; INSTALL PACKAGES 
;; ------------------------------------- 

(require 'package) 

;; Primary Emacs repository is MELPA 
(add-to-list 'package-archives 
     '("melpa" . "http://melpa.org/packages/") t) 

(package-initialize) 
(when (not package-archive-contents) 
    (package-refresh-contents)) 

(defvar myPackages 
    '(better-defaults 
    elpy ;; Emacs Lisp Python Environment 
    flycheck ;; flycheck Python syntax-checking 
    material-theme)) 

(mapC#'(lambda (package) 
     (unless (package-installed-p package) 
     (package-install package))) 
     myPackages) 

;; BASIC CUSTOMIZATION 
;; ------------------------------------- 

(setq inhibit-startup-message t) ;; hide startup message 
(load-theme 'material t) ;; load material theme 
(global-linum-mode t) ;; enable line numbers globally 
(global-flycheck-mode) ;; enable flycheck globally 

;; PYTHON CONFIGURATION 
;; ------------------------------------- 
(elpy-enable) ;; enable elpy 

;; use flycheck, not flymake with elpy 
(when (require 'flycheck nil t) 
    (setq elpy-modules (delq 'elpy-module-flymake elpy-modules)) 
    (add-hook 'elpy-mode-hook 'flycheck-mode)) 

(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. 
'(python-shell-interpreter "python3")) 
(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. 
) 

;; init.el ends here 

ответ

4

Flycheck просто вызывает pylint исполняемый файл, который должен быть где-то в пути. Если этот исполняемый файл был установлен питом для python2, тогда pylint проверит синтаксис python2, если он был установлен для pip (иногда называемый pip3) для python3, тогда pylint проверит синтаксис python3.

Как действовать зависит от ряда факторов.

Если вы используете виртуальные среды, то хорошее место для начала on this page от составляют скрытые создателя flycheck в в

Эта линия также необходима: (add-hook 'flycheck-mode-hook #'flycheck-virtualenv-setup)

Если вы не используете виртуальные среды, то вы можете просто убедиться, что установочный pylint был установлен для python3

+0

Является ли синтаксис Python 2 действительным синтаксисом Python 3? – Shuzheng

+0

По большей части, есть некоторые отличия. Например, python3 не имеет 'execfile' и несколько других вещей, таких как сокращение – Jules

7

Flycheck имеет количество шашек для каждого supported language (и многих других provided by the community). Почти все они используют внешние инструменты для проверки буферов, и большинство из них можно настроить.

Самый простой способ узнать, какие шашки поддерживаются и как их настроить, - это интроспекция. Откройте файл python и вызовите flycheck-verify-setup или нажмите C-c ! v. Это показывает вам новый буфер со списком синтаксических проверок, используемых в режиме python. Каждая проверка является гиперссылкой на документацию, где она описана, и указаны параметры конфигурации.

Поскольку у меня нет ни python-flake8python-pylint Я просто установить переменную flycheck-python-pycompile-executable в "python3" и все яркие и веселые.