web-dev-qa-db-fra.com

pylint ne pointe pas vers python virtuel

Je suis assez nouveau sur Python et je tente actuellement d’utiliser pylint pour vérifier la qualité du code. Je commence à avoir un problème. Mon pylint ne pointe pas vers un interpréteur python virtualenv. Voici le résultat obtenu lorsque je lance pylint --version

 $ pylint --version
   pylint 0.21.1,
   astng 0.20.1, common 0.50.3
   Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45)
   [GCC 4.4.7 20120313 (Red Hat 4.4.7-3)]

Dans virtualenv, j'ai installé python 2.7. Approuveront-vous votre aide si quelqu'un peut m'indiquer comment résoudre ce problème.

19
hjelpmig

Une astuce peu coûteuse consiste à exécuter pylint (global) à l’aide de python virtualenv. Vous pouvez le faire en utilisant python $(which pylint) au lieu de pylint. Sur zsh, vous pouvez aussi faire python =pylint

40
Noufal Ibrahim

Je suis à peu près sûr que vous devez installer pylint dans votre environnement virtuel, puis exécuter cette instance.

Mise à jour - Simplifiez-vous la vie:

Je suggérerais à toute personne travaillant beaucoup dans des environnements virtuels de créer un fichier de commandes, (dans un emplacement connu ou sur le chemin), ou un script bash avec quelque chose comme ceci appelé quelque chose comme getlint.bat:

pip install pylint

Invoquer ceci après l'activation de l'environnement virtuel installera pylint dans cet environnement virtuel. Si vous êtes susceptible d'être déconnecté ou si vous avez une mauvaise connexion Internet, vous pouvez, une fois lorsque vous disposez d'une bonne connexion Internet , (éventuellement une fois pour chacun des pythons 2 et 3):

mkdir C:\Some\Directory\You\Will\Leave\Alone
pip download --dest=C:\Some\Directory\You\Will\Leave\Alone pylint

Ce qui téléchargera pylint et ses dépendances en C:\Some\Directory\You\Will\Leave\Alone et vous pourrez modifier getlint.bat comme suit:

pip install pylint --find-links=C:\Some\Directory\You\Will\Leave\Alone

Il utilisera ensuite les versions pré-téléchargées.

22
Steve Barnes

J'ai rencontré ce problème aussi. Ma solution consistait simplement à modifier Shebang du programme pylint, comme si ... (votre chemin d'accès à pylint peut être différent du mien, cependant)

$ Sudo vim /usr/bin/pylint

Remplacement:

#!/usr/bin/python

Avec:

#!/usr/bin/env python
6
starlocke

La réponse de Noufal Ibrahim fonctionne si vous exécutez pylint manuellement.

Si vous exécutez pylint à partir de votre éditeur/IDE, vous devez configurer le plug-in correctement.

Cela peut devenir difficile. Cela peut être considéré comme un bogue de chaque IDE/plugin, mais c'est comme ça.

La modification de /usr/bin/pylint pour écrire #!/usr/bin/env python comme suggéré dans une autre réponse corrige ce problème pour chaque utilisation de pylint (utilisation manuelle ou intégration dans un éditeur).

Cependant, au moins dans Debian, utiliser #!/usr/bin/python est un choix de design , pas un bogue. Le lien que je fournis n'explique pas la raison. Le responsable du paquet pylint ne veut pas passer à #!/usr/bin/env python.

Pour éviter de modifier ce fichier système, vous pouvez créer une copie de /usr/bin/pylint dans /usr/local/bin:

cp /usr/bin/pylint /usr/local/bin/pylint
vi usr/local/bin/pylint # Edit the file to use /usr/bin/env python

Cela ne sera pas interrompu par une mise à jour pylint, mais ira contre le "choix fortement préféré" de Debian.

Cette méthode nécessite des privilèges root. Un utilisateur non privilégié peut créer un alias

alias pylint='/usr/bin/env python $(which pylint)'.

Il y a probablement de bonnes raisons pour que #!/usr/bin/python soit la forme préférée, bien que je ne les comprenne pas.

Pour l'instant, je suis prêt à faire des compromis avec cela. Utiliser la forme non préférée (créer /usr/local/bin/pylint ou utiliser un alias) me permet d’éviter de me tirer les cheveux pour savoir comment configurer mon linter correctement (en supposant que ce soit même faisable).

6
Jérôme

Le problème a été résolu sur le chat (lien dans les commentaires).

Le problème réside dans l'utilisation de Sudo yum install pylint, car il a installé pylint dans l'env global. La solution consistait à utiliser la commande suivante:

pip install -i http://f.pypi.python.org/simple pylint

Notez l'utilisation de -i, car l'index standard semblait être cassé pour le demandeur.

5
Maciej Gol

Je sais que cela fait un moment que cette question n'a pas reçu de réponse, mais je pensais simplement que je devais laisser ce message ici au cas où quelqu'un rencontrerait le même problème.

Si, pour une raison quelconque, vous devez conserver pylint dans l'espace global au lieu de votre environnement virtuel, vous pouvez utiliser la recommandation décrite ici: PyLint + VirtualEnv .

En gros, il est dit de configurer votre pylint en utilisant la version init-hook et le codage d'un programme Python qui utilisera la pylint globale et chargera le reste de l'environnement.

2
Omar Trejo

J'utilise la combinaison Syntastic + Pylint, et comme je peux travailler sur de nombreux virtualenv différents à tout moment, j'ai créé un wrapper à l'aide de la commande virtualenv qui installe pylint après toutes les exigences.

Ainsi, chaque fois que j'active une virtualenv, je vais avoir sa propre version de pylint.

J'espère que cela vous aidera et merci d'avoir effacé le problème mondial de @ briford-wylie

0
mrArias

Vous pouvez vous y rendre en appelant l'interpréteur python cible:

./env/bin/python -m pylint ...

# or in an already active env
python -m pylint ...
0
ThorSummoner