Установка Pylint для Python3 в Ubuntu

Насколько я понимаю, последний выпуск Pylint (1.0.0 на момент написания этой статьи) поддерживает Python 3, но я не могу заставить его работать на 64-битной Ubuntu 13.04 с Python 3.3.

Я следовал инструкциям по установке на сайте PyPi , и Pylint 1.0.0, кажется, успешно установлен (pylint --version возвращает pylint 1.0.0) и работает с кодом Python 2.7, но он сообщает об ошибке синтаксиса, когда видит нелокальные операторы и тому подобное.

Что дает? Существуют ли специальные инструкции по установке Pylint в Ubuntu?

31
задан 30 March 2016 в 14:55

6 ответов

Питон 2 и 3 - отдельные звери. Если вы устанавливаете сценарий в пакеты сайтов одной версии, вы не устанавливаете его в другой.

Я бы установил его через pip, но вам понадобится правильная версия pip.

sudo apt-get install python3-pip
sudo pip-3.3 install pylint

Это заменит вашу версию 2.7. Мы можем подтвердить это, проверив less $(which pylint):

#!/usr/bin/python3.3
# EASY-INSTALL-ENTRY-SCRIPT: 'pylint==1.0.0','console_scripts','pylint'
__requires__ = 'pylint==1.0.0'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pylint==1.0.0', 'console_scripts', 'pylint')()
    )
0
ответ дан 30 March 2016 в 14:55

Комментарий @sayth к принятому ответу привел меня сюда - я пишу скрипты как на python 2, так и на python 3, и я хочу иметь возможность проверять любой из них на правильный набор правил. установка pylint с использованием pip3 install pylint записывает короткий скрипт в /usr/local/bin, который вызывает интерпретатор python3 и, следовательно, предполагает, что все проверяемые файлы являются скриптами python 3.

Чтобы обойти это, у меня теперь есть следующие файлы:

~/bin/pylint2:

#!/usr/bin/python2
# EASY-INSTALL-ENTRY-SCRIPT: 'pylint','console_scripts','pylint'
__requires__ = 'pylint'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pylint', 'console_scripts', 'pylint')()
    )

и ~/bin/pylint3:

#!/usr/bin/python3
# EASY-INSTALL-ENTRY-SCRIPT: 'pylint','console_scripts','pylint'
__requires__ = 'pylint'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('pylint', 'console_scripts', 'pylint')()
    )

, а затем потому что мне нравится использовать pylint непосредственно из меню Geany «Build Commands», и я не могу указать разные команды для скриптов python 2 и python 3, у меня также есть ~/bin/pylint:

#!/bin/bash
if [[ $(head -n 1 "${@: -1}") == *python3* ]]
then
    # python3 file
    pylint3 "$@"
else
    pylint2 "$@"
fi

, который отправляет правильная версия, нюхая шебанга.

Не идеально, конечно, но функционально и, возможно, полезно для других.

0
ответ дан 30 March 2016 в 14:55

sudo apt install pylint3

Работал для меня в Ubuntu 16.04.2 LTS

0
ответ дан 30 March 2016 в 14:55

Как другой метод для выполнения pylint на обоих Python 2 и 3, обратите внимание, что можно использовать переключатель Python -m для выполнения модуля, установленного в системе в текущей версии Python, таким образом, можно сделать

$ python2 -m pylint
$ python3 -m pylint

для явного выбора, какой Вы хотите. Вы могли превратить их в псевдонимы или сценарии оболочки, если бы Вы хотели.

0
ответ дан 30 March 2016 в 14:55

Это в ответ на simons прекрасный ответ. Я просто думал об этом по-другому и думал, что это могло быть полезно для тех, которые ищут решения для нескольких версий python/pylint.

Установка pylint для 3.x и хранение 2,7 значений по умолчанию или наоборот легко сделан с помощью virtualenv.

Создают Вашу виртуальную среду. в Вашем ENV, в то время как активировано выполненном

    pip install pylint

здесь, можно затем выяснить, куда ENV поместил Python и pylint

    which pylint
    #/home/$USER/Desktop/python/awesomeSauce/bin/pylint

, и затем

    which python
    #/home/$USER/Desktop/python/awesomeSauce/bin/python

Затем это - просто вопрос установки язя для использования этого путь linting и/или путь Python. Я знаю, что это работает с Sublime3 так использование Иллинойса это в примере ниже.

в Сублимате в главном меню заголовка выбирают Предпочтения> Настройки Пакета> Pylinter> Настройки - Пользователь.

Это - просто объект json. Установите

    "python_bin": "python",
    // to the python path found earlier by 'which python'
    "python_bin": "/home/$USER/Desktop/python/awesomeSauce/bin/python",
    // dont for get the coma if it is the last element.
    // We also change the pylint_path from
    "pylint_path": null,
    // to
    "pylint_path": "/home/$USER/Desktop/python/awesomeSauce/bin/pylint",
    // sorry I cant make the formatting look any better.

, Сохранили файл. Я также делаю копию файла и сохраняю его в этом venv каталогом, таким образом, я могу легко переключиться путем копирования и вставки этой конфигурации, когда мне нужен этот linter. Когда я не делаю я просто сбросил Pylinter.sublime-настройки назад к значению по умолчанию для пользователя, и это, кажется, самый легкий способ, которым я нашел. Извините я не знаю команды окон, или я поместил бы их там.

0
ответ дан 30 March 2016 в 14:55

Корень проблемы в том, что pylint должен поставляться с консольными сценариями точки входа для / usr / local / bin / pylint2 и / usr / local / bin / pylint3. Это следует считать ошибкой.

Следующее не работает; он все еще работает pylint2:

python3 -m pylint p3file.py

Вот то, что я успешно использовал:

python2 /usr/local/bin/pylint p2file.py
python3 /usr/local/bin/pylint p3file.py
0
ответ дан 30 March 2016 в 14:55

Другие вопросы по тегам:

Похожие вопросы: