是否可以更改syntastic用于语法检查的python版本?

正如问题https://github.com/scrooloose/syntastic/issues/385所示,我可以使用virtual-env。 但是仅通过syntastic或vim命令是否还可能?

===============>>#1 票数:24

最简单的解决方案:

编辑:rubystallion是正确的。 这应该添加到.vimrc

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

考虑到这个问题是在Google搜索“ Syntastic python3 ”时出现的第一个结果,我的印象是,大多数答案对于匆忙的人来说太过复杂了,我不得不添加一个新的答案。 这是切换到python3的直接解决方案。 有人可能会说这不是最灵活的解决方案,但是问题如此模糊,以至于从简单的事情开始似乎是必要的。

===============>>#2 票数:20 已采纳

以下不再是必需的,如果您被迫使用严格的python 2.x脚本,则可能会搞砸。

最好的选择是单独保留Syntastic的默认值,并使用conda来管理python 3和2的单独环境(每个环境都具有自己的特定版本的flake8,pyflakes等安装),并切换到适当的环境进行编辑每个文件。 然后,Syntastic将根据已激活环境中设置的路径调用python / flake8 /其他任何内容。


Syntastic存储库README中

问:python checker抱怨语法上有效的Python 3构造...

A.配置python检查器以调用Python 3解释器而不是Python 2,例如:

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

将该行添加到您的.vimrc-应该可以解决您的问题。

===============>>#3 票数:13

尽管这里有所有答案,但我仍然发现FAQ中的建议是最好的。 我已将此添加到我的.vimrc以便可以轻松在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

安装了这些功能后,就可以根据我当前的需要,通过:call Py2():call Py3()在vim中轻松切换python版本。 无需退出vim并激活其他的virtualenv,就像流行的答案一样。

===============>>#4 票数:8

我设法说服Syntastic使用以下方法处理Python 3语法

pip3 install --user flake8

(使python3 -m flake8 *.py工作),然后在vim中:

let g:syntastic_python_flake8_exec = 'python3'
let g:syntastic_python_flake8_args = ['-m', 'flake8']

===============>>#5 票数:3

并非如此,但是您可以通过安装此包来获取python3不兼容的警告。

假设您当前的Syntastic Python检查器是python并且您想获取python3不兼容的警告。 在命令模式下,可以通过以下方式将py3kwarn添加到g:syntastic_python_checkers

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

并仅切换到python2.x

:let g:syntastic_python_checkers=['python']

===============>>#6 票数:3

如果您在virtualenv下工作,则可以使用脚本来检测当前的python版本并相应地调用flake8 将以下内容放在您的路径中,名称为flake8.sh

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

现在在您的vimrc添加:

let g:syntastic_python_flake8_exe='flake8.sh'

还要确保同时安装了python-flake8python3-flake8 (在Ubuntu上)。

===============>>#7 票数:1

只有我这样做来解决此问题:

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

确保flake8与Python3的语法同步。 即使我在virtualenv中也可以工作。

===============>>#8 票数:0

只是稍微重复一下Zaar Hai的脚本,这样的事情应该起作用并且更加健壮。

#!/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

  ask by mjb4 translate from so

未解决问题?本站智能推荐: