Ответ 1
Дешевый трюк - запустить (глобальную) пилингу, используя виртуальный питон. Вы можете сделать это, используя python $(which pylint)
вместо pylint
. На zsh вы также можете сделать python =pylint
.
Я новичок в python и currenty. Я пытаюсь использовать pylint для проверки качества кода. У меня проблема. Моя пилинга не указывает на virtualenv python interpreter. Вот результат, который я получаю, когда запускаю pylint -version
$ pylint --version
pylint 0.21.1,
astng 0.20.1, common 0.50.3
Python 2.6.6 (r266:84292, Jul 10 2013, 22:48:45)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)]
В virtualenv у меня установлен python 2.7. Будете ли вы прибегать к помощи, если кто-то может указать мне, как это решить.
Дешевый трюк - запустить (глобальную) пилингу, используя виртуальный питон. Вы можете сделать это, используя python $(which pylint)
вместо pylint
. На zsh вы также можете сделать python =pylint
.
Я достаточно уверен, что вам нужно установить pylint под свою виртуальную среду, а затем запустить этот экземпляр.
Я бы предположил, что любой, кто много работает в виртуальных средах, создает командный файл (в известном месте или на пути) или bash script с чем-то вроде следующего: getlint.bat
:
pip install pylint
Вызов этой после активации виртуальной среды установит pylint в эту виртуальную среду. Если вы, вероятно, будете в автономном режиме или имеете плохое подключение к Интернету, которое вы можете, один раз, когда у вас есть хорошее интернет-соединение (возможно, один раз для каждого из python 2 и 3):
mkdir C:\Some\Directory\You\Will\Leave\Alone
pip download --dest=C:\Some\Directory\You\Will\Leave\Alone pylint
Что загрузит pylint и его зависимости в C:\Some\Directory\You\Will\Leave\Alone
, и вы можете изменить getlint.bat
следующим образом:
pip install pylint --find-links=C:\Some\Directory\You\Will\Leave\Alone
Затем он будет использовать предварительно загруженные версии.
Я столкнулся с этой проблемой. Моим решением было просто отредактировать программу pylint shebang, например... (ваш путь к pylint может отличаться от моего, хотя)
$ sudo vim /usr/bin/pylint
Замена:
#!/usr/bin/python
С
#!/usr/bin/env python
Ответ Noufal Ibrahim работает, если вы выполняете pylint вручную.
Если вы выполняете pylint из вашего редактора /IDE, вам нужно правильно настроить плагин.
Это может показаться сложным. Это можно считать ошибкой каждого IDE/плагина, но это как.
Изменение /usr/bin/pylint
для записи #!/usr/bin/env python
, как предложено в другом ответе, исправляет это для каждого использования pylint (ручное использование или любая интеграция редактора).
Однако, по крайней мере, в Debian использование #!/usr/bin/python
является выбором дизайна, а не ошибкой. Ссылка, которую я предоставляю, не объясняет обоснования. Составитель пакета pylint не хочет перемещаться в #!/usr/bin/env python
.
Чтобы избежать изменения этого системного файла, можно создать копию /usr/bin/pylint
в /usr/local/bin
:
cp /usr/bin/pylint /usr/local/bin/pylint
vi usr/local/bin/pylint # Edit the file to use /usr/bin/env python
Это не будет нарушено обновлением pylint, но все равно нарушает "предпочтительный выбор" Debian.
Этот метод требует прав root. Непривилегированный пользователь может создать псевдоним
alias pylint='/usr/bin/env python $(which pylint)'.
Вероятно, существуют веские причины, по которым #!/usr/bin/python
является предпочтительной формой, хотя я их не понимаю.
В настоящее время я готов пойти на компромисс с этим. Использование непривычной формы (создание /usr/local/bin/pylint
или использование псевдонима) позволяет мне не вытягивать мои волосы, выясняя, как правильно настроить свой лингер (если это возможно даже).
Проблема была решена в чате (ссылка в комментариях).
Проблема заключалась в использовании sudo yum install pylint
, поскольку она установила pylint в глобальном env. Решение заключалось в использовании следующей команды:
pip install -i http://f.pypi.python.org/simple pylint
Обратите внимание на использование -i
, поскольку регулярный индекс, по-видимому, был сломан для искателя.
Я знаю, что прошло некоторое время, поскольку на этот вопрос был дан ответ, но я просто подумал, что я должен оставить этот пост здесь, если кто-то другой столкнется с той же проблемой.
Если по какой-то причине вам нужно сохранить pylint
в глобальном пространстве вместо вашей виртуальной среды, вы можете использовать здесь рекомендацию: PyLint + VirtualEnv.
В основном говорится о настройке pylint
с помощью init-hook
и версии кодировки программы Python, которая будет использовать глобальную pylint
и загружать остальную среду.
Вы можете добраться туда, вызвав интерпретатор целевого python:
./env/bin/python -m pylint ...
# or in an already active env
python -m pylint ...
Я использую комбинацию Syntastic + Pylint, и, поскольку у меня есть много разных virtualenv, над которыми я могу работать в любой момент времени, я создал оболочку над командой virtualenv, которая, помимо прочего, устанавливает pylint после все требования.
Таким образом, всякий раз, когда я активирую virtualenv, я получаю свою собственную версию pylint.
Надеюсь, что это поможет, и спасибо за отзыв об удалении глобального из @briford-wylie
Столкнулся с той же проблемой только сегодня. Продолжая ответ ThorSummoner, при использовании Pylint с pylint-django внутри виртуальной среды, такой как Pipenv, обязательно вызовите pylint, используя целевой интерпретатор python -m pylint
(python -m pylint
)
Хороший подход, который будет работать локально и на вашем CI, - это записать команду lint в разделе сценариев вашего Pipfile:
[scripts]
lint = "python -m pylint [--options] all-my-modules-names..."
Тогда вызвать Pylint так же просто, как:
pipenv run lint