So führen Sie Pylint mit PyCharm aus

78

Ich möchte pylint als externes Tool in meinem gesamten Projektverzeichnis für ein Python-Projekt konfigurieren, an dem ich arbeite. Ich habe versucht, das Repository als Modul mit __init__.pyund ohne zu verwenden, und es funktioniert in keiner Weise.

Ich habe Schwierigkeiten, Pylint für die Ausführung mit PyCharm einzurichten. Ich weiß, dass ich es als externes Tool ausführen sollte, aber die Einstellungen verwirren mich.

Die maßgebliche Quelle in ihrer Dokumentation ist fehlerhaft, daher kann ich das auch nicht überprüfen.

Wasif Hyder
quelle

Antworten:

129

Sie können die pylintArbeit mit PyCharm einrichten, indem Sie die folgenden Schritte ausführen:

  1. Installieren pylint:

    $ pip install pylint
    
  2. Suchen Sie Ihren pylintInstallationsordner:

    $ which pylint         # MacOS/Linux
    /usr/local/bin/pylint  # this is just a possible output check yours
    

    $ where pylint         # Windows
    %LocalAppData%\Programs\Python\Python36-32\Scripts\pylint.exe  # possible location
    
  3. Öffnen Sie das PyCharm-Einstellungsfenster mit File -> Settingsund navigieren Sie Tools -> External Toolsin der Seitenleiste zu. (Oder suchen Sie nach " externen Tools ")

    PyCharm Externe Tools

  4. Richten Sie ein externes Tool ein, indem Sie auf das + -Zeichen klicken und die Felder entsprechend ausfüllen. Im ProgramGebrauch der Pfad , den Sie bekam beim Laufen which pylint, für die anderen Werte können Sie die gleiche des Bildes verwenden.

    PyCharm-Bearbeitungswerkzeug

  5. Laufen pylintvon Tools -> External Tools -> pylint:

    Externe PyCharm-Tools

  6. Schauen Sie sich Ihre Ausgabe im PyCharm-Terminal an

    PyCharm-Terminal

Weitere Informationen finden Sie unter Pylinting mit PyCharm .

Aktualisieren:

Wenn Sie pylintIhr gesamtes Projekt oder eine bestimmte Datei oder ein bestimmtes Verzeichnis überprüfen möchten , können Sie mit der rechten Maustaste auf den Stamm, die Datei oder das Verzeichnis Ihres Projekts klicken External Tools -> pylint(siehe Abbildung unten).

PyCharm prüft das gesamte Projekt

lmiguelvargasf
quelle
@stevenVascellaro, können Sie diesen Link überprüfen . Oder Sie könnten herausfinden, wo pylintin Ihrem Computer installiert wurde.
lmiguelvargasf
1
Vielen Dank. Ich habe Anweisungen für Windows-Benutzer hinzugefügt.
Stevoisiak
@StevenVascellaro, vielen Dank für Ihren Beitrag!
lmiguelvargasf
Während diese Antwort funktioniert, schreibt sie nur die Ergebnisse in ein Textfeld. Es gibt jetzt ein PyCharm-Plugin, das all das erledigt und sich auch in die IDE einfügt und verdächtige Zeilen hervorhebt. Es kann aus dem Standard-Repository heruntergeladen werden. Siehe eine der anderen Antworten für Details.
JohnEye
Ich habe jeden von Ihnen beschriebenen Schritt ausgeführt, aber die Warnmeldung angezeigt: Keine Konfigurationsdatei gefunden, Standardkonfiguration verwendet. Dann habe ich eine Ressourcendatei wie in einer Antwort erstellt: stackoverflow.com/questions/5253559/… . Jetzt funktioniert Pylint gut.
Limonik
26

Da ich kein funktionierendes, vorgefertigtes Setup gefunden habe, sind dies die Einstellungen, die ich in PyCharm CE 2018.1 unter macOS verwende:

1 - pip install pylintin Ihrem Projekt virtuell oder global

2 - Fügen Sie ein neues externes Tool hinzu und konfigurieren Sie:

Program: pylint
Arguments: "--msg-template='{abspath}:{line:5d},{column:2d}: {msg} ({symbol})'" --output-format=colorized "$FilePath$"
Working directory: $ProjectFileDir$
Output filters: $FILE_PATH$:\s*$LINE$\,\s*$COLUMN$:

Beachten Sie die erforderlichen doppelten Anführungszeichen für die Nachrichtenvorlage und die Escapezeichen für die Ausgabefilter. Mit dem Ausgabefilter können Sie auf den Dateipfad klicken und den Speicherort im IDE-Quellcode-Editor öffnen.

Das einzige fehlende Merkmal wären die Ausgabefilter, um die Flusenbeschreibungen direkt in die Quellansicht zu zeichnen, wie dies beim eingebauten Linter der Fall ist. Derzeit gibt es jedoch keine solche Funktion.

Pylint Argumente

lkraider
quelle
5
Diese Einstellungen funktionieren auch unter Windows, falls sich jemand wundert.
geometrische
Wie wäre es mit Windows?
StackGuru
14

Sie können dieses Pylint PyCharm-Plugin ausprobieren :

Pylint PyCharm Screenshot

Bietet sowohl Echtzeit- als auch On-Demand-Scannen von Python-Dateien mit Pylint aus PyCharm / IDEA.

Sobald Sie es installiert haben, funktioniert die Echtzeitprüfung automatisch. Für die On-Demand-Option stehen Ihnen mehrere Optionen zur Verfügung, von der Überprüfung der aktuell geöffneten Datei bis zum Scannen des gesamten Projekts: Geben Sie hier die Bildbeschreibung ein

(Nur aus Gründen der Transparenz bin ich der Entwickler)

Roberto Leinardi
quelle
Das sieht gut aus. Leider wird beim Start eine Ausnahme ausgelöst - die in / usr / bin installierte Version von pylint gefällt nicht und Pylint aus der virtuellen Umgebung des Projekts wird nicht verwendet. Ich werde weiter nach Updates suchen, da Ihr Plugin die ideale Lösung darstellt :-)
Aaron F
Hallo, wenn Sie es noch nicht getan haben, öffnen Sie bitte hier ein Problem , indem Sie auch die Datei idea.log anhängen .
Roberto Leinardi
Ich habe einen kurzen Blick darauf geworfen und es scheint ein Duplikat von # 29 zu sein. Ich werde die relevanten Zeilen aus meinem Protokoll zu diesem Problem hinzufügen.
Aaron F
@AaronF Sie müssten den Pfad des Pylint manuell auf den Pfad einstellen, der auf Ihrer virtuellen Umgebung installiert ist. Beispiel: projectvenv / bin / pylint anstelle von / usr / bin / pylint
Gautam Jain
13

Bearbeiten: Ich verwende und empfehle jetzt das Pycharm-Plugin, das es nicht gab, als ich diese Antwort zum ersten Mal schrieb.


Ein Kollege hat mich auf GitHub auf pylint-pycharm hingewiesen . Es ist ein Wrapper um Pylint mit einer für PyCharm formatierten Ausgabe. So habe ich es eingerichtet:

git clone https://github.com/perses76/pylint-pycharm.git
cd pylint-pycharm
python setup.py build

Dies schafft build/scripts-2.7/pylint-pycharm

Erstellen Sie dann in PyCharm ein neues externes Tool mit den folgenden Einstellungen:

Program: path to your installation of pylint-pycharm  
Arguments: --virtualenv=$PyInterpreterDirectory$/.. $FileName$
Working directory: $FileDir$ 
Output filters: $FILE_PATH$\:$LINE$\:$COLUMN$\:.*

Screenshot der Einstellungen für PyLint for PyCharm External Tool

Führen Sie es nun über Tools -> Externe Tools -> PyLintPyCharm aus. Jede Ausgabezeile wird mit der entsprechenden Position im Quellcode verlinkt.

Aaron F.
quelle
5

Ein Hinweis zu den vorherigen Antworten. Ich habe nach einer Methode gesucht, um PyCharm auf die Ausgabesyntax aufmerksam zu machen, damit ich direkt zu den Speicherorten der Dateien springen kann. Das funktioniert ohne zusätzliche Tools.

Pylint kann mithilfe der msg-templateOption in der Pylintrc-Datei oder der CLI-Option so konfiguriert werden, dass Nachrichten in einem bestimmten Format ausgegeben werden --msg-template.

Ich setze es auf: msg-template='{abspath}:{line}:{column}: {msg_id} {msg}'

In den Einstellungen für externe Tools Output filters:kann das so eingestellt werden, $FILE_PATH$:$LINE$:$COLUMN$: .* dass PyCharm Links anzeigt, um direkt zu den gemeldeten Speicherorten zu springen. Dies kann kombiniert werden, output-format=colorizeddamit ich Geben Sie hier die Bildbeschreibung ein Folgendes erhalte: PyCharm erkennt die Spalte trotz Konfiguration nicht. Aber die Datei und die Zeile zu haben, reicht mir.

ub_marco
quelle
Siehe meine Antwort bezüglich des richtigen Ausgabefilters, um auch die Spalte zu erkennen: stackoverflow.com/a/50298934/324731
lkraider
@lkraider Ich sehe den relevanten Unterschied nicht. Sie trennen Zeile und Spalte durch Komma, was ich versucht habe - es hat nicht funktioniert. Dann entkommen Sie dem Doppelpunkt, was nicht notwendig sein sollte. Ich habe versucht, Ihre vollständige Lösung für msg-templateund Output filtersaber die Spalte wurde nicht erkannt. Vielleicht stimmt etwas anderes nicht. Können Sie das Problem genau bestimmen? Ich arbeite mit PyCharm 2018.1.2.
ub_marco
Wie testen Sie die Erkennung? Meins unterstreicht nicht die Zeilennummer wie Ihre (noch die Spalte), aber durch Klicken auf den Link wird das Caret an die richtige Position gebracht.
lkraider
Ich habe das Problem gefunden. Wenn die Zeilennummer unterstrichen angezeigt wird, funktioniert der Link nicht. Dies würde in meinem Beispiel passieren, wenn die Zeile> 99 ist. Wenn eine Leerzeichen-Trennung vorliegt, platziert der Link das Caret korrekt an der Spaltenposition.
lkraider
Das hat früher bei mir funktioniert ... jetzt bekomme ich "Windows kann die Datei nicht finden: /// C: \ Use ...".
Dan Ciborowski - MSFT
3

Installieren Sie zuerst Pylint mit Pip:

pip install pylint

Sie müssen "Einstellungen> Extras> Externe Tools" öffnen und bei PyCharm die Taste "+" drücken.

Hier ist ein Beispiel mit guten Einstellungen.

ikreb
quelle
2
Ich bin dem Beispiel gefolgt, habe aber beim Ausführen einen Fehler erhalten. Programm "pylint" (im Verzeichnis "/ Users / RodChen / my_project") kann nicht ausgeführt werden: error = 2, Keine solche Datei oder kein solches Verzeichnis. Ich bin sicher, dass das Verzeichnis existiert, da ich $ FileDir $ als Arbeitsverzeichnis verwende. Wie kann ich es reparieren? Danke.
Rod Chen
Ich denke, dass Sie Windows verwenden. Funktioniert Pylint am Terminal?
Ikreb
2
Ich benutze Mac. Ich habe pylint nur in der virtuellen Umgebung installiert, in der ich arbeite, und pylint funktioniert nicht am normalen Terminal. Nachdem ich pylint im System installiert hatte, funktionierte pylint in PyCharm! Vielen Dank!
Rod Chen
@ RodChen Ich habe auch pylintin einer virtuellen Umgebung installiert. Ich habe PyCharm auf den Python-Interpreter meiner virtuellen Umgebung verwiesen, und es scheint gut zu funktionieren. Ich bin allerdings sehr neu pylint, also beziehen Sie sich vielleicht auf eine bestimmte Funktionalität, die mir nicht bekannt ist.
Marc
3

Roberto Leinardi hat ein Pylint-Plugin für Pycharm erstellt, das wirklich funktioniert und sich gut in die IDE integriert:

Einfache Installation aus den Repositorys, vollständige Anweisungen unter: https://github.com/leinardi/pylint-pycharm

Ich habe bisher eine kurze, aber glückliche Erfahrung damit! Ein großes Lob an Roberto.

architektonisch
quelle
1

Dank der Informationen hier und der aktualisierten Dokumentation von PyCharm konnte ich dies zum Funktionieren bringen, um auch die virtuelle Umgebung für das Projekt zu verwenden (um sicherzustellen, dass alle Pakete in der virtuellen Umgebung bereitgestellt werden können und nicht global bereitgestellt werden müssen ).

Nehmen Sie, was lkraider früher bereitgestellt hat, aber mit geringfügigen Änderungen:

  1. Stellen Sie sicher, dass Sie pylint in der virtuellen Umgebung installieren. Beachten Sie, dass Sie beim Erstellen der virtuellen Umgebung nicht "Globale Site-Pakete erben" ausgewählt haben. Wenn Sie dies tun, wird Pylint global und dies wird nicht funktionieren.

  2. Neues externes Tool hinzufügen und konfigurieren. Dies unterscheidet sich geringfügig von dem, was lkraider zur Verfügung gestellt hat. Zum einen wollte ich, dass es eher wie eine normale Pylint-Ausgabe aussieht, daher ist meine Nachrichtenvorlage (und mein Ausgabefilter) etwas anders. Jeder für sich. Die zweite Änderung ist kritischer für die Ausführung von Pylint basierend auf der virtuellen Umgebung, dh dem Programmparameter, in dem ich $ PyInterpreterDirectory $ verwende.

Program: $PyInterpreterDirectory$/pylint
Arguments: "--msg-template='{abspath}:{line:5d}:{column}: {msg_id}: {msg} ({symbol})'" --output-format=colorized "$FilePath$"
Working directory: $ProjectFileDir$
Output filters: $FILE_PATH$:\s*$LINE$\:\s*$COLUMN$:

Externes Werkzeug für Pylint

Erik
quelle
Wie wäre es mit Windows?
StackGuru