Встановлення Pylint для Python3 на Ubuntu


31

Я розумію, що в останньому випуску 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?

Відповіді:


27

Пітон 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')()
    )

Чудово. Це працює. Зауважу, однак, що ці команди не замінили версію 2.7 на моїй машині. Мені довелося видалити його з 2.7 dist-пакетів, а потім повторно виконувати команди.
Jerrad Genson

3
@ Олі, якщо я встановив pylint для python 3, то версія python 2 за замовчуванням не працює?
sayth

5
Я виявив, що з новими версіями (на Python 3.5 і т.д. Nov 2016) є також pylint3 , який можна встановити з: sudo apt install pylint3.
Рік Хендерсон

21

Коментар @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 безпосередньо з меню "Створення команд" Гені, і я не можу вказати різні команди для сценаріїв python 2 та python 3, у мене також є ~/bin/pylint:

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

який розсилає правильну версію, обнюхуючи шебанг.

Не досконалий, звичайно, але функціональний і, можливо, корисний для інших.


11

З тих пір екосистема пілінта змінилася (після того, як було задано це питання), і тепер існує окремий пілінт для python3. Його можна встановити за допомогою:

sudo apt install pylint3

Працював для мене на Ubuntu 16.04.2 LTS


1
це працює і для мене. Встановлено pylint для python3 і досі зберігають pylint для python 2.
zhihong

Ця відповідь є правильною для загальносистемної установки.
jII

7

В якості іншого способу запуску pylint на Python 2 і 3, зауважте, що ви можете використовувати -mперемикач Python для запуску модуля, встановленого в системі в поточній версії Python, так що ви можете це зробити

$ python2 -m pylint
$ python3 -m pylint

чітко вибрати, який саме ви хочете. Ви можете перетворити їх у псевдоніми або сценарії оболонки, якщо хочете.


2

Корінь проблеми полягає в тому, що 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

Це у відповідь на точну відповідь симонів. Я просто подумав про це по-іншому і вважав, що це може бути корисним для тих, хто шукає рішення для декількох версій python / pylint.

Установка pylint для 3.x та утримання 2.7 за замовчуванням або навпаки легко виконати за допомогою virtualenv.

Створіть своє віртуальне середовище. у вашому оточенні під час активованого запуску

    pip install pylint

тут ви зможете зрозуміти, куди ваш оточуючий помістив пітон і пілінт

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

і потім

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

Тоді лише питання налаштування вашої ідеї використовувати той зв’язуючий шлях та / або шлях пітона. Я знаю, що це працює з Sublime3, тому я використовую це у прикладі нижче.

у меню "Підняття" у верхньому меню заголовка виберіть Налаштування> Налаштування пакета> Пілінт> Налаштування - Користувач.

Це просто об’єкт 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, щоб я міг легко перемикатися, копіюючи та вставляючи цей конфігурацію, коли мені потрібен цей лінкер. Коли я цього не роблю, я просто скидаю налаштування Pylinter.sublime назад до стандартних для користувача, і це здається найпростішим способом, який я знайшов. Вибачте, я не знаю команд Windows, або я б їх помістив туди.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.