Switch Python Version for Vim & Syntastic
Easiest solution:
Add this to you .vimrc
let g:syntastic_python_python_exec = 'python3'
let g:syntastic_python_checkers = ['python']
This is the straightforward solution to switch to python3.
The below is no longer necessary, and might screw up if you're forced to work on a strictly python 2.x script.
The best option is to leave the Syntastic defaults alone, and to use conda to manage separate environments for python 3 and 2 (each with their own version-specific installs of flake8, pyflakes, etc), and to switch to the appropriate environment to edit each file. Syntastic will then call python/flake8/whatever else according to the paths set in the activated environment.
From the Syntastic repository README:
Q. The python checker complains about syntactically valid Python 3 constructs...
A. Configure the python checker to call a Python 3 interpreter rather than Python 2, e.g:
let g:syntastic_python_python_exec = '/path/to/python3'
Add that line to your .vimrc - that should fix your problem.
In spite of all the answers here, I still find the recommendation from the FAQ to be the best. I have added this to my .vimrc
so that I can easily switch between python versions.
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
With those functions installed, it's easy to switch python version right within vim with :call Py2()
or :call Py3()
depending on what I need at the moment. No need to exit vim and activate a different virtualenv as the popular answer would have you do.