wake-up-neo.com

So führen Sie Pylint für alle Python-Dateien in einem Verzeichnis aus

Ich habe 

find . -iname "*.py" -exec pylint -E {} ;\

und

FILES=$(find . -iname "*.py")
pylint -E $FILES

Wenn ich es richtig verstanden habe, führt der erste Befehl pylint für jede der Python-Dateien aus, der zweite Befehl führt einmal für alle Dateien pylint aus. Ich hatte erwartet, dass beide Befehle dieselbe Ausgabe zurückgeben würden, aber unterschiedliche Ergebnisse. Ich denke, dass dieser Unterschied irgendwie mit Importen und Pylint-Meldungen (Fehler) zusammenhängt, die auftreten, wenn ein Import fehlschlägt und nicht von pylint -E ausgegeben wird. 

Hat jemand das schon erlebt und könnte erklären, warum der Unterschied passiert und wie läuft Pylint am besten?

21

Mein ein Cent 

find . -iname "*.py" | xargs pylint 

Wie funktioniert es?

find findet alle Dateien, endet mit py und wird an xargs übergeben. xargs führt den Befehl pylint für jede Datei aus.

HINWEIS: Sie können auch ein beliebiges Argument für den Befehl pylint angeben. 

BEARBEITEN:

Nach doc können wir verwenden

[1] pylint mymodule.py

[2] Pylint-Verzeichnis/mymodule.py

[2] funktioniert, wenn das Verzeichnis ein Python-Paket ist (d. H. Eine __init__.py-Datei enthält oder ein implizites Namensraum-Paket ist) oder wenn "Verzeichnis" im Python-Pfad enthalten ist.

26
sonus21

Übergeben Sie einfach den Verzeichnisnamen an den Befehl pylint. So legen Sie alle Dateien in ./server ab:

pylint server
17
duhaime

Für alle Python-Dateien in einem Verzeichnis können Sie Folgendes ausführen:

pylint *.py
pylint **/*.py
7
chilicheech

Wenn Sie keine __init__.py-Datei im Verzeichnis haben und dies aus verschiedenen Gründen nicht möchten, ist dies mein Ansatz

touch __init__.py; pylint <folder-name>; rm __init__.py
3
Ryan Feeley

Haben Sie versucht, psospector ( https://pypi.org/project/prospector/ ) oder pylint_runner ( https://pypi.org/project/pylint_runner/ )

2
NN_

Es gibt bereits ein Problem hierfür und es wird hoffentlich bald behoben.

Wenn Sie xargs nicht bevorzugen, können Sie einfach einen einfachen find-exec ausführen:

find . -type f -name "*.py" -exec pylint -j 0 --exit-zero {} \;


Das Problem, das ich mit pylint Project-Dir Hatte, ist, dass alle absoluten Importe nicht funktionierten.

1
holzkohlengrill

Wenn Sie pylint für alle Dateien im aktuellen Arbeitsverzeichnis und den Unterordnern ausführen möchten, finden Sie hier eine Problemumgehung. Dieses Skript führt pylint im aktuellen Verzeichnis aus. Wenn __init__.py nicht vorhanden ist, erstellt es es, führt pylint aus und entfernt es dann.

#! /bin/bash -
if [[ ! -e __init__.py ]]; then
    touch __init__.py
    pylint `pwd`
    rm __init__.py
else
    pylint `pwd`
fi
0
JeremyDouglass

Wenn Sie Ihre benutzerdefinierte Konfigurationsdatei ausführen möchten, verwenden Sie den folgenden Befehl 

pylint --rcfile=.pylintrc <directory_name>
0
Santosh Pillai
  1. touch __init__.py Im aktuellen Verzeichnis
  2. touch __init__.py In jedem Unterverzeichnis, das Sie als Pylint betrachten möchten
  3. pylint $(pwd) (oder gleichwertig pylint /absolute/path/to/current/directory)
0
krubo