2016-06-09 17 views
5

Ich habe Flycheck für Emacs Python auf Ubuntu 15.04 installiert.Emacs: Wie setze ich flycheck auf Python 3?

Bei Verwendung des Tools meldet es jedoch False Positives wie print(item, end=' ') ist falsche Syntax aufgrund end.

ich das weiß, ist Python 3 Syntax, und dass die Syntaxfehler durch flycheck verursacht wird, ist für Python einrichten 2.

Wie kann ich für Python 3 flycheck up?

In der Dokumentation zu Github wird nicht erwähnt, ob Python 2 oder 3 (nur Python) unterstützt wird.

Auch, wenn möglich, geben Sie mir einen Hinweis, warum das Elpa-Tool keine Vorschläge für z. grundlegende Python-Typen.

Meine init.el Datei ist hier:

;; 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 

Antwort

4

Flycheck ruft einfach die Pylint ausführbare Datei, die in Ihrem Pfad irgendwo sollte. Wenn diese ausführbare Datei von pip für python2 installiert wurde, überprüft pylint die python2-Syntax, wenn sie für pip (manchmal pip3 genannt) für python3 installiert wurde, dann prüft pylint die python3-Syntax.

Wie Sie vorgehen, hängt von einer Reihe von Dingen ab.

Wenn Sie virtuelle Umgebungen dann ein guter Anfang verwenden ist on this page von flycheck des Schöpfers dotfiles

Diese Linie ist auch notwendig: (add-hook 'flycheck-mode-hook #'flycheck-virtualenv-setup)

Wenn Sie nicht virtuellen Umgebungen verwenden, dann können Sie nur sicherstellen, dass die ausführbare Datei pylint für python3 installiert wurde

+0

Ist Python 2-Syntax gültig für Python 3-Syntax? – Shuzheng

+0

Zum größten Teil gibt es jedoch einige Unterschiede. Zum Beispiel hat python3 nicht 'execfile' und ein paar andere Dinge wie reduzieren – Jules

7

Flycheck hat eine Reihe von Checkern für jede supported language (und viele weitere provided by the community). Fast alle von ihnen verwenden externe Tools, um Puffer zu überprüfen und die meisten von ihnen können konfiguriert werden.

Der einfachste Weg herauszufinden, welche Prüfer unterstützt werden und wie sie konfiguriert werden, ist die Introspektion. Öffnen Sie eine Python-Datei und rufen Sie flycheck-verify-setup oder drücken Sie C-c ! v. Dies zeigt Ihnen einen neuen Puffer mit einer Liste von Syntax-Checkern, die im Python-Modus verwendet werden. Jeder Checker ist ein Hyperlink zu der Dokumentation, in der er beschrieben ist und die Konfigurationsoptionen angegeben sind.

Da habe ich nicht python-flake8 noch python-pylint Ich habe nur die Variable flycheck-python-pycompile-executable-"python3" und alles ist hell und freundlich.