As 2020
Using ale plus installing a linter pip3 install pylint is asynchronous and therefore probably the better idea. It does not block when you save, syntastic will block. It also works for other languages (like syntastic). It is based on the Language Server Protocol.
Old Answer (2014)
Using syntastic plus installing pip install flake8 gives you the best experience IMHO. syntastic is great, because it not only does pep8 checks for Python, but by installing other software it’s really easy to add syntax checks and the like for other languages.
Old Answer (2013)
vim-flake8 is the better choice, I will try it 🙂
Oldest Answer (2012)
There’s also a little script called ‘pep8’ – https://github.com/vim-scripts/pep8
I have it configured on 8:
let g:pep8_map='<leader>8'
I really like it. It works really good.