Installation de Pylint pour Python3 sur Ubuntu

28

Je crois comprendre que la dernière version de Pylint (1.0.0 au moment de la rédaction de cet article) prend en charge Python 3, mais je ne parviens pas à le faire fonctionner sur Ubuntu 13.04 64 bits avec Python 3.3.

J'ai suivi les instructions d'installation sur le site PyPi et Pylint 1.0.0 semble être installé correctement ( pylint --version renvoie pylint 1.0.0) et fonctionne avec le code Python 2.7, mais il signale une erreur de syntaxe lorsqu'il voit des instructions non locales et autres.

Qu'est-ce qui donne? Existe-t-il des instructions d’installation spéciales pour Pylint sur Ubuntu?

    
posée Jerrad Genson 03.09.2013 - 18:40
la source

5 réponses

24

Python 2 et 3 sont des bêtes distinctes. Si vous installez un script dans les packages de site d’une version, vous ne l’installez pas dans l’autre.

Je l'installerais via pip, mais vous aurez besoin de la bonne version de pip.

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

Ceci remplacera votre version 2.7. Nous pouvons le confirmer en vérifiant 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')()
    )
    
réponse donnée Oli 03.09.2013 - 18:50
la source
20

Le commentaire de @sayth sur la réponse acceptée est ce qui m’attire ici: j’écris à la fois les scripts Python 2 et Python 3, et je veux pouvoir vérifier l’ensemble de règles correct. L’installation de pylint à l’aide de pip3 install pylint écrit un court script dans /usr/local/bin qui appelle l’interpréteur python3 et semble donc supposer que tous les fichiers à vérifier sont des scripts python 3.

pour contourner ce problème, j’ai maintenant les fichiers suivants:

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

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

et puis, parce que j'aime utiliser pylint directement à partir du menu "Construire des commandes" de Geany, et que je ne peux pas spécifier de commandes différentes pour les scripts python 2 et python 3, j'ai également ~/bin/pylint :

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

qui envoie la bonne version en reniflant le shebang.

Pas parfait, certes, mais fonctionnel et peut-être utile pour les autres.

    
réponse donnée simon 12.02.2014 - 02:24
la source
4

Comme autre méthode d’exécution de pylint sur Python 2 et 3, notez que vous pouvez utiliser le commutateur -m de Python pour exécuter un module installé sur le système dans la version actuelle de Python.

$ python2 -m pylint
$ python3 -m pylint

pour sélectionner explicitement celui que vous voulez. Vous pouvez en faire des alias ou des scripts shell si vous le souhaitez.

    
réponse donnée Soren Bjornstad 11.07.2016 - 00:46
la source
4

sudo apt install pylint3

Travaillé pour moi sur Ubuntu 16.04.2 LTS

    
réponse donnée Phil 17.07.2017 - 02:00
la source
2

La racine du problème est que pylint doit venir avec des scripts de console de point d’entrée pour / usr / local / bin / pylint2 et / usr / local / bin / pylint3. Cela devrait être considéré comme un bug.

Les éléments suivants ne ne fonctionnent pas; il fonctionne toujours pylint2:

python3 -m pylint p3file.py

Voici ce que j'utilise avec succès:

python2 /usr/local/bin/pylint p2file.py
python3 /usr/local/bin/pylint p3file.py
    
réponse donnée Curt 08.03.2017 - 22:44
la source

Lire d'autres questions sur les étiquettes