Укажите, для какой версии python pylint следует оценивать

Я использую Sublime Text 3 с Pylinter для запуска pylint с моими файлами.

Однако на одном компьютере я работаю с файлами для проектов как python 2, так и python 3 (код выполняется на одной из нескольких удаленных тестовых виртуальных машин через SSH. Я изменяю файлы, открывая их через SMB. Это это моя домашняя тестовая лаборатория, и я наконец сажусь изучать py3k).

Могу ли я легко переопределить механизм, который pylint использует, чтобы определить версию Python, для которой он должен линт? В идеале была бы встроенная директива, но мне ничего не удалось найти.

Я (редактирую) в Windows (удаленные виртуальные машины - это Linux, но здесь это не имеет значения), чего бы это ни стоило.


person Fake Name    schedule 14.04.2014    source источник


Ответы (7)


AFAIK Pylint lints для версии Python, на которой он работает, и его невозможно переопределить.

person gurney alex    schedule 14.04.2014
comment
@ gurney-alex прав. Это связано с тем, что pylint полагается как на синтаксический анализатор, так и на представление ast, предоставляемое дистрибутивом python. - person sthenault; 15.04.2014
comment
Понятно. Я не понимал, насколько глубоко он зацепился за работу парсера Python. Я предположил, что он интерпретирует код внутренне, а не работает с AST, сгенерированным путем запуска локального интерпретатора python для него. - person Fake Name; 15.04.2014
comment
Я не уверен, что это совсем правильно. Я использую Python 2.7.3, но pylint сообщает warning (W0622, redefined-builtin, ) Redefining built-in 'bytes'. bytes() не является встроенным в Python 2. - person nullromo; 11.08.2016

Вы можете попробовать python2 -m pylint ... и python3 -m pylint .... Это гарантирует, что вы используете правильную версию.

person chris    schedule 26.07.2017
comment
Отлично, я думаю, это лучший ответ. Конечно, вам нужно установить pylint на обоих установках python. (pip2 install pylint и pip3 install pylint) - person John Smith Optional; 23.03.2018
comment
Этот метод добавит текущий каталог к ​​пути, поэтому убедитесь, что он не содержит файл с именем pylint.py и не конфликтует с любыми косвенными импортами, такими как astroid (вероятно, безопасное предположение для вашего собственного кода, но опасно при попытке автоматического анализа третьей стороны РЕПО) - person anjsimmo; 05.07.2020

Расширение ответа @sthenault и активное заимствование у @simon's очень похожего вопроса на askubuntu решение состоит в том, чтобы написать сценарий оболочки вокруг pylint, который будет выполнять его с соответствующей версией интерпретатора Python. Поместите следующее в скрипт с именем mypylint (или что-то в этом роде) где-нибудь в вашем $PATH:

#! /usr/bin/env bash

python_interpreter="python${1}"
pylint_args="-f colorized ${@:2}"
pylint_import=$(cat << PYTHON
import sys
import pkg_resources

__requires__ = "pylint"
sys.exit(
    pkg_resources.load_entry_point("pylint", "console_scripts", "pylint")()
)
PYTHON
)

$python_interpreter -c "$pylint_import" $pylint_args

Затем выполните его так: mypylint 2|3 PYLINT_ARGS. Например:

mypylint 2 -f colorized module.py

Я не уверен, как вы можете связать это с возвышенным текстом, но в более общем плане он отвечает на вопрос о параллельных версиях pylint. Я также объединил вышеупомянутое решение в суть.

person sevko    schedule 27.11.2014

Это хорошо, но я думаю, что проще всего использовать virtualenv и установить pylint в каждый virtualenv. Будет использоваться правильный интерпретатор pylint и python.

person user3685621    schedule 27.02.2015
comment
Спасибо. У меня был virtualenv и pylint, но он не был установлен в моем virtualenv, поэтому pylint использовал вместо него глобальный, что вызывало проблемы. - person E. Sundin; 18.11.2016

Вы можете переопределить на уровне проекта в Sublime Text, изменив настройку исполняемого файла pylint в Project-> Edit Project, чтобы включить:

"settings":
{
    "SublimeLinter.linters.pylint.executable": ["py", "-3.4", "-m", "pylint"],
}

заменив желаемый аромат на 3,4

person RoboCodoDodo    schedule 11.07.2018
comment
на моем компьютере с Windows вместо этого используется команда ["C:\\python27\\python.exe", "-m", "pylint"], которая использует буквальный путь к исполняемому файлу Python - ›может использовать буквальный путь для вашего конкретного интересующего вас python.exe - person CrepeGoat; 22.04.2020
comment
... например, виртуальный - person CrepeGoat; 22.04.2020

У вас должно быть две установки pylint, скажем, pylint2 и pylint3, а затем написать сценарий оболочки, который будет выполнять подпроцессинг нужной.

person sthenault    schedule 15.04.2014

Вы можете установить pylint3, который будет оценивать python 3.0, и pylint, который по умолчанию будет оценивать код как python 2.7.

person David Greydanus    schedule 22.04.2016