Installation von Pylint für Python3 unter Ubuntu

31

Meines Wissens nach unterstützt die neueste Version von Pylint (1.0.0 zum Zeitpunkt des Schreibens) Python 3, aber ich kann nicht dafür sorgen , dass es unter 64-Bit-Ubuntu 13.04 mit Python 3.3 funktioniert.

Ich habe die Installationsanweisungen auf der PyPi-Site befolgt , und Pylint 1.0.0 wurde anscheinend erfolgreich installiert ( pylint --versiongibt Pylint 1.0.0 zurück). Es funktioniert mit Python 2.7-Code, meldet jedoch einen Syntaxfehler, wenn nicht-lokale Anweisungen und dergleichen angezeigt werden.

Was gibt? Gibt es spezielle Installationsanweisungen für Pylint unter Ubuntu?

Jerrad Genson
quelle

Antworten:

27

Python 2 und 3 sind getrennte Bestien. Wenn Sie ein Skript in die Site-Pakete einer Version installieren, installieren Sie es nicht in die andere.

Ich würde es über pip installieren, aber Sie benötigen die richtige Version von pip.

sudo apt-get install python3-pip
sudo pip-3.3 install pylint

Dies wird Ihre 2.7-Version ersetzen . Wir können dies bestätigen, indem wir Folgendes überprüfen less $(which pylint):

#!/usr/bin/python3.3
# EASY-INSTALL-ENTRY-SCRIPT: 'pylint==1.0.0','console_scripts','pylint'
__requires__ = 'pylint==1.0.0'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pylint==1.0.0', 'console_scripts', 'pylint')()
    )
Oli
quelle
Groß. Das funktioniert. Ich werde jedoch beachten, dass diese Befehle haben nicht die Version 2.7 auf meinem Rechner ersetzen. Ich musste es aus den 2.7 dist-Paketen entfernen und dann die Befehle erneut ausführen.
Jerrad Genson
3
@Oli also wenn ich pylint für python 3 installiere, funktioniert die standard python 2 version nicht?
Sayth
5
Ich fand heraus , dass mit neueren Versionen (ab Python 3.5 usw. November 2016) gibt es auch eine pylint3 , die Sie mit installieren: sudo apt install pylint3.
Rick Henderson
21

@sayths Kommentar zu der akzeptierten Antwort hat mich hierher gezogen: Ich schreibe sowohl Python 2 als auch Python 3-Skripte und möchte in der Lage sein, beide mit dem richtigen Regelsatz zu vergleichen. Bei der Installation von PYLINT mit wird pip3 install pylintein kurzes Skript geschrieben, /usr/local/bindas den Python3-Interpreter aufruft. Daher wird davon ausgegangen, dass alle zu überprüfenden Dateien Python 3-Skripte sind.

Um dies zu umgehen, habe ich jetzt die folgenden Dateien:

~/bin/pylint2:

#!/usr/bin/python2
# EASY-INSTALL-ENTRY-SCRIPT: 'pylint','console_scripts','pylint'
__requires__ = 'pylint'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pylint', 'console_scripts', 'pylint')()
    )

und ~/bin/pylint3:

#!/usr/bin/python3
# EASY-INSTALL-ENTRY-SCRIPT: 'pylint','console_scripts','pylint'
__requires__ = 'pylint'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pylint', 'console_scripts', 'pylint')()
    )

Und dann, weil ich pylint direkt aus Geanys "Build Commands" -Menü verwenden möchte und keine unterschiedlichen Befehle für Python 2- und Python 3-Skripte angeben kann, habe ich auch ~/bin/pylint:

#!/bin/bash
if [[ $(head -n 1 "${@: -1}") == *python3* ]]
then
    # python3 file
    pylint3 "$@"
else
    pylint2 "$@"
fi

welches durch schnüffeln des shebang die richtige version auslöst.

Sicher nicht perfekt, aber funktional und vielleicht nützlich für andere.

simon
quelle
11

Das Pylint-Ökosystem hat sich seitdem geändert (nachdem diese Frage gestellt wurde), und es gibt jetzt ein separates Pylint für python3. Es kann installiert werden mit:

sudo apt install pylint3

Arbeitete für mich auf Ubuntu 16.04.2 LTS

Phil
quelle
1
das funktioniert auch bei mir. Installierte pylint für python3 und behalte weiterhin pylint für python 2.
zhihong
Diese Antwort ist die richtige für die systemweite Installation.
30.
7

Beachten Sie, dass Sie als weitere Methode zum Ausführen von pylint auf Python 2 und 3 den Python- -mSwitch verwenden können, um ein Modul auszuführen, das in der aktuellen Version von Python auf dem System installiert ist

$ python2 -m pylint
$ python3 -m pylint

um explizit auszuwählen, welches Sie möchten. Sie können diese in Aliase oder Shell-Skripte umwandeln, wenn Sie möchten.

Soren Bjornstad
quelle
2

Die Wurzel des Problems ist, dass Pylint mit Einstiegspunkt-Konsolenskripten für / usr / local / bin / pylint2 und / usr / local / bin / pylint3 geliefert werden sollte. Dies sollte als Fehler angesehen werden.

Folgendes funktioniert nicht ; es läuft immer noch pylint2:

python3 -m pylint p3file.py

Folgendes habe ich erfolgreich verwendet:

python2 /usr/local/bin/pylint p2file.py
python3 /usr/local/bin/pylint p3file.py
Curt
quelle
0

Dies ist eine Antwort auf Simons feine Antwort. Ich habe nur anders darüber nachgedacht und dachte, es könnte nützlich sein für diejenigen, die nach Lösungen für mehrere Versionen von Python / Pylint suchen.

Die Installation von pylint for 3.x und die Beibehaltung der 2.7-Standardeinstellungen oder umgekehrt ist mit virtualenv ganz einfach.

Erstellen Sie Ihre virtuelle Umgebung. in deinem env laufen lassen während aktiviert

    pip install pylint

Hier können Sie dann herausfinden, wo Ihr Env Ihre Python- und Pylint-Datei abgelegt hat

    which pylint
    #/home/$USER/Desktop/python/awesomeSauce/bin/pylint

und dann

    which python
    #/home/$USER/Desktop/python/awesomeSauce/bin/python

Dann müssen Sie nur noch Ihren ide so einrichten, dass er diesen Flusenpfad und / oder Pythonpfad verwendet. Ich weiß, dass es mit Sublime3 funktioniert, also verwende ich das im folgenden Beispiel.

Wählen Sie in Sublime im oberen Header-Menü Einstellungen> Paketeinstellungen> Pylinter> Einstellungen - Benutzer.

Es ist nur ein Json-Objekt. Stellen Sie die

    "python_bin": "python",
    // to the python path found earlier by 'which python'
    "python_bin": "/home/$USER/Desktop/python/awesomeSauce/bin/python",
    // dont for get the coma if it is the last element.
    // We also change the pylint_path from
    "pylint_path": null,
    // to
    "pylint_path": "/home/$USER/Desktop/python/awesomeSauce/bin/pylint",
    // sorry I cant make the formatting look any better.

Speicher die Datei. Ich mache auch eine Kopie der Datei und behalte sie in diesem venv-Verzeichnis, so dass ich einfach wechseln kann, indem ich diese Konfiguration kopiere und einfüge, wenn ich diesen Linter benötige. Wenn nicht, setze ich einfach die Pylinter.sublime-Einstellungen auf die Standardeinstellungen für Benutzer zurück und dies scheint der einfachste Weg zu sein, den ich gefunden habe. Tut mir leid, dass ich die Windows-Befehle nicht kenne, sonst hätte ich sie dort eingefügt.

tldr
quelle