是否可以更改 syntastic 用于语法检查的 python 版本?
正如问题 https://github.com/scrooloose/syntastic/issues/385表明我可以使用虚拟环境。但是仅使用 syntastic 或 vim 命令也可以吗?
是否可以更改 syntastic 用于语法检查的 python 版本?
正如问题 https://github.com/scrooloose/syntastic/issues/385表明我可以使用虚拟环境。但是仅使用 syntastic 或 vim 命令也可以吗?
添加这个给你.vimrc
let g:syntastic_python_python_exec = 'python3'
let g:syntastic_python_checkers = ['python']
这是切换到python3的直接解决方案。
以下不再是必需的,如果您被迫使用严格的 python 2.x 脚本,可能会搞砸。
最好的选择是单独保留 Syntastic 默认值,并使用conda来管理 python 3 和 2 的单独环境(每个环境都有自己的 flake8、pyflakes 等特定于版本的安装),并切换到适当的环境进行编辑每个文件。然后 Syntastic 将根据激活环境中设置的路径调用 python/flake8/whatever。
问:python 检查器抱怨语法上有效的 Python 3 构造...
A. 将 python 检查器配置为调用 Python 3 解释器而不是 Python 2,例如:
let g:syntastic_python_python_exec = '/path/to/python3'
将该行添加到您的 .vimrc - 这应该可以解决您的问题。
尽管这里有所有答案,但我仍然认为常见问题解答中的建议是最好的。我已将此添加到我的.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
安装了这些功能后,很容易在 vim 中根据我目前的需要切换 python:call Py2()
版本:call Py3()
。无需像流行的答案那样退出 vim 并激活不同的 virtualenv。
我设法说服 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']
不是真的,但你可以python3
通过 install
this package得到不兼容的警告。
假设您当前的 Syntastic Python 检查器是python
并且您想要获得
python3
不兼容的警告。在命令模式下,您可以py3kwarn
通过g:syntastic_python_checkers
:let g:syntastic_python_checkers=['python', 'py3kwarn']
并切换到python2.x
仅
:let g:syntastic_python_checkers=['python']
如果您在 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-flake8
和python3-flake8
(在 Ubuntu 上)。
只有我这样做才能解决这个问题:
let g:syntastic_python_flake8_exec = '/path/to/python3'
确保 flake8 与 Python3 的语法同步。即使我在 virtualenv 中工作。
只是对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