Switch Python Version pour Vim & Syntastic
est-il possible de changer la version python utilisée par syntastic pour la vérification de syntaxe?
le Problème https://github.com/scrooloose/syntastic/issues/385 indique que je pouvais utiliser virtual-env. Mais est-ce aussi possible avec des commandes syntastic ou vim?
8 réponses
ce qui suit n'est plus nécessaire, et pourrait foirer si vous êtes forcé de travailler sur un Python 2 strictement.x script.
la meilleure option est de laisser les valeurs par défaut Syntastic seules, et d'utiliser conda pour gérer des environnements séparés pour python 3 et 2 (chacun avec ses propres installations de version de flake8, pyflakes, etc), et pour passer à l'environnement approprié pour éditer chaque fichier. Syntastic appellera alors python / flake8 / quoi que ce soit d'autre selon les chemins définis dans l'environnement activé.
Q. le vérificateur python se plaint de la validité syntaxique des constructions Python 3...
A. configurer le python checker pour appeler un interpréteur Python 3 plutôt que Python 2, e. g:
let g:syntastic_python_python_exec = '/path/to/python3'
Ajouter cette ligne à votre. vimrc - cela devrait régler votre problème.
malgré toutes les réponses ici, je trouve toujours que la recommandation de la FAQ est la meilleure. J'ai ajouté à mon .vimrc
pour que je puisse facilement basculer entre les versions de python.
function Py2()
let g:syntastic_python_python_exec = '/usr/local/bin/python2.7'
endfunction
function Py3()
let g:syntastic_python_python_exec = '/usr/local/bin/python3.6'
endfunction
call Py3() " default to Py3 because I try to use it when possible
avec ces fonctions installées, il est facile de changer la version python directement dans vim avec :call Py2()
ou :call Py3()
selon ce que j'ai besoin en ce moment. Pas besoin de quitter vim et d'activer un virtualenv différent comme la réponse populaire vous aurait fait.
J'ai réussi à convaincre Syntastic de gérer la syntaxe Python 3 avec
pip3 install --user flake8
(pour faire
let g:syntastic_python_flake8_exec = 'python3'
let g:syntastic_python_flake8_args = ['-m', 'flake8']
Pas vraiment, mais vous pouvez obtenir l' python3
avertissement incompatible par install
ce paquet.
disons que votre Python Python checker Syntastic actuel est python
et vous souhaitez obtenir
python3
avertissement incompatible. En mode commande, vous pouvez ajouter py3kwarn
g:syntastic_python_checkers
par
:let g:syntastic_python_checkers=['python', 'py3kwarn']
et passer à python2.x
:let g:syntastic_python_checkers=['python']
Considérant que cette question est le premier résultat qui s'affiche lors d'une recherche Google pour " Syntastic python3", j'ai l'impression que la plupart des réponses sont trop compliqué pour quelqu'un de pressé, et je me sens obligé d'en ajouter une nouvelle. La solution simple pour passer à python3 mettre
let g:syntastic_python_checkers = ['python3']
dans votre .vimrc
. On pourrait arguer que ce n'est pas la meilleure solution, mais la question est tellement vague que semble nécessaire de commencer avec les choses simples.
si vous travaillez sous virtualenv, vous pouvez utiliser un script qui détecte la version actuelle de python et invoque flake8
en conséquence. Mettez ce qui suit quelque part dans votre chemin et le nom est flake8.sh
:
#!/bin/sh
PYMAJOR=$(python --version | awk '{print }'| awk -F. '{print }')
exec /usr/bin/python$PYMAJOR /usr/bin/flake8 $*
Maintenant, à vous vimrc
ajouter:
let g:syntastic_python_flake8_exe='flake8.sh'
assurez-vous aussi que les deux python-flake8
et python3-flake8
(sur Ubuntu) sont installés.
seulement j'ai fait pour corriger cela était de faire:
let g:syntastic_python_flake8_exec = '/path/to/python3'
pour s'assurer que flake8 est synchronisé avec la syntaxe de Python3. Même quand je suis dans un virtualenv fonctionne.
Juste pour itérer sur Zaar Hai's script un peu, quelque chose comme cela doit fonctionner et être un peu plus robuste.
#!/usr/bin/env bash
_python=$(command -v python)
[[ "$(uname -s)" =~ Darwin ]] && IS_OSX=true
if [[ "$IS_OSX" ]]; then
if command -v 'greadlink' >/dev/null 2>&1; then
greadlink -f "$_python"
else
echo 'Install coreutils!' >&2
fi
else
readlink -f "$_python"
fi