Подтвердить что ты не робот

Версия Python для Vim & Syntastic

Можно ли изменить версию python, используемую синтаксисом для проверки синтаксиса?

Как проблема https://github.com/scrooloose/syntastic/issues/385 указывает, что я могу использовать virtual-env. Но возможно ли это также с помощью синтаксических или vim-команд?

4b9b3361

Ответ 1

Ниже больше не нужно и может испортиться, если вы вынуждены работать на строго python 2.x script.

Самый лучший вариант - оставить только значения Syntastic по умолчанию и использовать conda для управления отдельными средами для python 3 и 2 ( каждый из которых имеет свои собственные установки для версии flake8, pyflakes и т.д.), а также для переключения в соответствующую среду для редактирования каждого файла. Затем Syntastic вызовет python/flake8/все остальное в соответствии с путями, установленными в активированной среде.


Из README для репозитория Syntastic:

Q. Контроллер python жалуется на синтаксически корректные конструкции Python 3...

A. Настройте python checker для вызова интерпретатора Python 3, а не Python 2, например:

let g:syntastic_python_python_exec = '/path/to/python3'дел >

Добавьте эту строку в ваш .vimrc - это должно устранить вашу проблему.

Ответ 2

Мне удалось убедить 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']

Ответ 3

Несмотря на все ответы здесь, я по-прежнему считаю, что рекомендации из 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

С установленными функциями легко переключить версию python прямо в vim с помощью :call Py2() или :call Py3() в зависимости от того, что мне нужно в данный момент. Вам не нужно выходить из vim и активировать другой virtualenv, так как ваш популярный ответ вы бы сделали.

Ответ 4

Не совсем, но вы можете получить несовместимое предупреждение 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']

Ответ 5

Если вы работаете в virtualenv, вы можете использовать script, который обнаруживает текущую версию 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).

Ответ 6

Только я сделал это, чтобы это сделать:

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

Чтобы убедиться, что flake8 синхронизирован с синтаксисом Python3. Даже когда я работаю в virtualenv.

Ответ 7

Просто для повторения