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.
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
.
Je suis à peu près sûr que vous devez installer pylint dans votre environnement virtuel, puis exécuter cette instance.
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.
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
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).
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.
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.
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
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 ...