Switch Python Version for Vim & Syntastic

后端 未结 8 1086
忘了有多久
忘了有多久 2020-12-24 05:15

Is it possible to change the python version used by syntastic for syntax checking?

As the Issue https://github.com/scrooloose/syntastic/issues/385 indicates I could

相关标签:
8条回答
  • 2020-12-24 05:41

    Easiest solution:

     let g:syntastic_python_python_exec = 'python3'
     let g:syntastic_python_checkers = ['python']
    

    This is the first result that appears when searching Google for "Syntastic python3": most answers are too complicated for someone in a hurry. This is the straightforward solution to switch to python3.

    0 讨论(0)
  • 2020-12-24 05:45

    Only I did to fix this was to do:

      let g:syntastic_python_flake8_exec = '/path/to/python3'
    

    To make sure flake8 is synced with Python3's syntax. Even when I'm in a virtualenv works.

    0 讨论(0)
  • 2020-12-24 05:48

    Not really, but you can get the python3 incompatible warning by install this package.

    Let's say your current Syntastic Python checker is python and you want to get python3 incompatible warning. In command mode, you can add py3kwarn to g:syntastic_python_checkers by

    :let g:syntastic_python_checkers=['python', 'py3kwarn']
    

    and switch to python2.x only

    :let g:syntastic_python_checkers=['python']
    
    0 讨论(0)
  • 2020-12-24 05:50

    If you working under virtualenv, you can use a script that detects current python version and invokes flake8 accordingly. Put the following somewhere in your path and name is flake8.sh:

    #!/bin/sh
    PYMAJOR=$(python --version | awk '{print $2}'| awk -F. '{print $1}')
    exec "/usr/bin/python$PYMAJOR" /usr/bin/flake8 "$@"
    

    Now in you vimrc add:

    let g:syntastic_python_flake8_exe='flake8.sh'
    

    Also make sure that both python-flake8 and python3-flake8 (on Ubuntu) are installed.

    0 讨论(0)
  • 2020-12-24 05:51

    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.

    0 讨论(0)
  • 2020-12-24 05:51

    I managed to convince Syntastic to handle Python 3 syntax with

    pip3 install --user flake8
    

    (to make python3 -m flake8 *.py work) and then, in vim:

    let g:syntastic_python_flake8_exec = 'python3'
    let g:syntastic_python_flake8_args = ['-m', 'flake8']
    
    0 讨论(0)
提交回复
热议问题