Installazione di Pylint per Python3 su Ubuntu


31

La mia comprensione è che l'ultima versione di Pylint (1.0.0 al momento in cui scrivo) ha il supporto per Python 3, ma non riesco a farlo funzionare su Ubuntu 13.04 a 64 bit con Python 3.3.

Ho seguito le istruzioni di installazione sul sito PyPi e Pylint 1.0.0 sembra essere installato correttamente ( pylint --versionrestituisce pylint 1.0.0) e funziona con il codice Python 2.7, ma riporta un errore di sintassi quando vede istruzioni non locali e simili.

Cosa dà? Ci sono istruzioni speciali per l'installazione di Pylint su Ubuntu?

Risposte:


27

Python 2 e 3 sono bestie separate. Se installi uno script nei pacchetti del sito di una versione, non lo installi nell'altra.

Lo installerei tramite pip, ma avrai bisogno della versione giusta di pip.

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

Questo sostituirà la tua versione 2.7. Possiamo confermarlo controllando 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')()
    )

Grande. Che funzioni. Noterò, tuttavia, che quei comandi non hanno sostituito la versione 2.7 sul mio computer. Ho dovuto rimuoverlo dai dist-pacchetti 2.7, quindi rieseguire i comandi.
Jerrad Genson,

3
@Oli, quindi se installo pylint per Python 3, la versione predefinita di Python 2 non funziona?
sayth

5
Ho scoperto che con le versioni più recenti (a partire da Python 3.5, ecc Nov 2016) c'è anche un pylint3 che può essere installato con: sudo apt install pylint3.
Rick Henderson,

21

Il commento di @sayth alla risposta accettata è stato ciò che mi ha attirato qui: scrivo sia script Python 2 che Python 3 e voglio essere in grado di verificare sia il set di regole corretto. installando pylint usando pip3 install pylintscrive un breve script in /usr/local/bincui richiama l'interprete python3 e sembra quindi supporre che tutti i file da controllare siano script python 3.

per ovviare a questo, ora ho i seguenti file:

~/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')()
    )

e ~/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')()
    )

e poi, poiché mi piace usare pylint direttamente dal menu "Build Commands" di Geany e non posso specificare comandi diversi per gli script python 2 e python 3, ho anche ~/bin/pylint:

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

che invia la versione corretta annusando lo shebang.

Non perfetto, certamente, ma funzionale e, forse, utile per gli altri.


11

L'ecosistema pylint è cambiato da allora (dopo che questa domanda è stata posta), e ora esiste un pylint separato per python3. Può essere installato con:

sudo apt install pylint3

Ha funzionato per me su Ubuntu 16.04.2 LTS


1
questo funziona anche per me. Installato pylint per python3 e conservando comunque il pylint per python 2.
zhihong,

Questa risposta è quella corretta per l'installazione a livello di sistema.
jII

7

Come altro metodo per eseguire pylint su Python 2 e 3, si noti che è possibile utilizzare l'opzione Python -mper eseguire un modulo installato sul sistema nella versione corrente di Python, quindi è possibile farlo

$ python2 -m pylint
$ python3 -m pylint

per selezionare esplicitamente quale vuoi. Se lo desideri, puoi trasformarli in alias o script di shell.


2

La radice del problema è che pylint dovrebbe venire con gli script della console del punto di ingresso per / usr / local / bin / pylint2 e / usr / local / bin / pylint3. Questo dovrebbe essere considerato un bug.

Quanto segue non funziona; esegue ancora pylint2:

python3 -m pylint p3file.py

Quello che segue è quello che sto usando con successo:

python2 /usr/local/bin/pylint p2file.py
python3 /usr/local/bin/pylint p3file.py

0

Questo è in risposta alla risposta eccellente di Simon. Ci ho appena pensato in un modo diverso e ho pensato che potesse essere utile per chi cerca soluzioni per più versioni di python / pylint.

L'installazione di pylint per 3.x e il mantenimento del valore predefinito 2.7 o viceversa vengono eseguiti facilmente con virtualenv.

Crea il tuo ambiente virtuale. nel tuo ambiente mentre la corsa è attivata

    pip install pylint

qui puoi capire dove il tuo env ha messo il tuo pitone e il tuo pylint

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

e poi

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

Quindi è solo questione di impostare il tuo ide per usare quel percorso di lanugine e / o percorso di pitone. So che funziona con Sublime3, quindi lo userò nell'esempio seguente.

in Sublime nel menu in alto nell'intestazione selezionare Preferenze> Impostazioni pacchetto> Pylinter> Impostazioni - Utente.

È solo un oggetto json. Impostare il

    "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.

Salva il file. Faccio anche una copia del file e lo conservo in quella directory venv in modo da poter passare facilmente copiando e incollando questa configurazione quando ho bisogno di questa linter. Quando non lo faccio, ripristino le impostazioni Pylinter.sublime sui valori predefiniti per l'utente e questo sembra essere il modo più semplice che ho trovato. Mi dispiace non conosco i comandi di Windows o li avrei inseriti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.