Як запустити Pylint за допомогою PyCharm


82

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

У мене виникають труднощі з налаштуванням пілінта для запуску з PyCharm. Я знаю, що повинен запускати його як зовнішній інструмент, однак налаштування мене бентежать.

Авторитетне джерело їхньої документації не працює, тому я теж не можу це перевірити.

Відповіді:


134

Ви можете налаштувати pylintроботу з PyCharm, виконавши наступні кроки:

  1. Встановити pylint:

    $ pip install pylint
    
  2. Знайдіть pylintпапку встановлення:

    $ which pylint         # MacOS/Linux
    /usr/local/bin/pylint  # this is just a possible output check yours
    

    $ where pylint         # Windows
    %LocalAppData%\Programs\Python\Python36-32\Scripts\pylint.exe  # possible location
    
  3. Відкрийте вікно налаштувань PyCharm за допомогою File -> Settings, а потім перейдіть до Tools -> External Toolsбічної панелі. (Або шукайте " зовнішні інструменти ")

    Зовнішні інструменти PyCharm

  4. Налаштуйте зовнішній інструмент, натиснувши знак + і заповнивши поля відповідно. У Programвикористанні шлях , який ви отримали під час запуску which pylint, для інших значень ви можете використовувати ті ж зображення.

    Інструмент редагування PyCharm

  5. Запустити pylintз Tools -> External Tools -> pylint:

    Зовнішні інструменти PyCharm

  6. Подивіться свої результати в терміналі PyCharm

    Термінал PyCharm

Для отримання більш докладної інформації зверніться до розділу Пілінгування за допомогою PyCharm .

Оновлення:

Якщо ви хочете скористатися pylintдля перевірки всього вашого проекту або певного файлу чи каталогу, ви можете клацнути правою кнопкою миші на корені, файлі чи каталозі вашого проекту, External Tools -> pylintяк показано нижче.

PyCharm перевіряє весь проект


@stevenVascellaro, ви можете перевірити це посилання . Або ви можете дізнатись, де pylintвстановлено ваш апарат.
lmiguelvargasf

1
Дякую. Я додав інструкції для користувачів Windows.
Стевойсяк

@StevenVascellaro, дякую вам за ваш внесок!
lmiguelvargasf

Хоча ця відповідь працює, вона просто записує результати в текстове поле. Зараз існує плагін PyCharm, який робить все це, а також підключається до IDE і виділяє підозрілі рядки. Його можна завантажити зі сховища за замовчуванням. Детальніше дивіться в одній з інших відповідей.
JohnEye

Я зробив кожен описаний вами крок, але отримав попереджувальне повідомлення: Конфігураційний файл не знайдено за допомогою конфігурації за замовчуванням. Потім я створив файл ресурсу, як у відповіді: stackoverflow.com/questions/5253559/… . Зараз пілінт працює добре.
limonik

27

Оскільки я не знайшов діючої готової установки, ось такі налаштування я використовую в PyCharm CE 2018.1 на macOS:

1 - pip install pylintу вашому проекті virtualenv або глобально

2 - Додайте новий зовнішній інструмент і налаштуйте:

Program: pylint
Arguments: "--msg-template='{abspath}:{line:5d},{column:2d}: {msg} ({symbol})'" --output-format=colorized "$FilePath$"
Working directory: $ProjectFileDir$
Output filters: $FILE_PATH$:\s*$LINE$\,\s*$COLUMN$:

Зверніть увагу на необхідні подвійні лапки для шаблону msg та екранні символи для вихідних фільтрів. Вихідний фільтр дозволяє клацнути на шляху до файлу та відкрити розташування в редакторі джерела IDE.

Єдиною відсутньою функцією були б вихідні фільтри для побудови описів ворсу безпосередньо у поданні джерела, як це робиться із вбудованим лінтером. На даний момент такої функції немає.

аргументи пілінт


6
Ці налаштування працюють і в Windows на випадок, якщо комусь було цікаво.
geometrikal

як щодо вікон?
StackGuru

14

Ви можете спробувати цей плагін Pylint PyCharm :

Знімок екрану Pylint PyCharm

забезпечує сканування файлів Python у режимі реального часу та на вимогу за допомогою Pylint із PyCharm / IDEA.

Після його встановлення перевірка в режимі реального часу працює автоматично. Для замовлення у вас є кілька варіантів, які включають перевірку поточного відкритого файлу до сканування всього проекту: введіть тут опис зображення

(Тільки заради прозорості я розробник)


Це добре виглядає. На жаль, це викликає виняток при запуску - йому не подобається версія pylint, встановлена ​​в / usr / bin, і не використовує pylint з virtualenv проекту. Я продовжуватиму перевіряти наявність оновлень, тому що ваш плагін, схоже, буде ідеальним рішенням :-)
Aaron F

Привіт, якщо ви цього ще не зробили, відкрийте тут проблему, додавши також файл idea.log .
Роберто Лейнарді,

Я швидко подивився, і, здається, це дублікат №29. До цього випуску я додаю відповідні рядки зі свого журналу.
Aaron F

@AaronF Вам потрібно було б вручну встановити шлях до пілінта до шляху, встановленого на вашому virtualenv. напр .: projectvenv / bin / pylint замість / usr / bin / pylint
Gautam Jain

13

Редагувати: Зараз я використовую та рекомендую плагін Pycharm, якого не було, коли я вперше писав цю відповідь.


Колега показав мені на pylint-pycharm на GitHub. Це обгортка навколо пілінта з форматом виводу для PyCharm. Ось як я це налаштував:

git clone https://github.com/perses76/pylint-pycharm.git
cd pylint-pycharm
python setup.py build

Це створює build/scripts-2.7/pylint-pycharm

Потім у PyCharm створіть новий Зовнішній інструмент із такими налаштуваннями:

Program: path to your installation of pylint-pycharm  
Arguments: --virtualenv=$PyInterpreterDirectory$/.. $FileName$
Working directory: $FileDir$ 
Output filters: $FILE_PATH$\:$LINE$\:$COLUMN$\:.*

Знімок екрана налаштувань зовнішнього інструменту PyLint для PyCharm

Тепер запустіть його з Інструменти -> Зовнішні інструменти -> PyLintPyCharm. Кожен рядок виводу буде гіперпосилати на відповідну позицію у вихідному коді.


5

Примітка до попередніх відповідей. Я шукав метод, щоб повідомити PyCharm про вихідний синтаксис, щоб я міг безпосередньо перейти до розташування файлів. Це працює без використання додаткових інструментів.

Pylint можна налаштувати для виведення повідомлень у певному форматі, використовуючи msg-templateопцію у файлі pylintrc або опцію CLI --msg-template.

Я встановив: msg-template='{abspath}:{line}:{column}: {msg_id} {msg}'

У налаштуваннях Зовнішніх інструментів Output filters:можна встановити значення $FILE_PATH$:$LINE$:$COLUMN$: .* так, щоб PyCharm показував посилання для безпосереднього переходу до повідомлених місць. Це можна поєднати з output-format=colorizedтаким чином, я отримую таке: введіть тут опис зображення PyCharm не розпізнає стовпець, незважаючи на його налаштування. Але наявності файлу та рядка мені цілком достатньо.


Дивіться мою відповідь по приводу правильного вихідного фільтра , щоб виявити колонки , а також: stackoverflow.com/a/50298934/324731
lkraider

@lkraider Я не бачу відповідної різниці. Ви розділяєте рядок і стовпець комами, які я спробував - це не спрацювало. Тоді ви рятуєтесь від товстої кишки, що не повинно бути необхідним. Я спробував ваше повне рішення для msg-templateі , Output filtersале колона була виявлена. Можливо, щось інше не так, ви можете визначити проблему? Я працюю з PyCharm 2018.1.2.
ub_marco

Як ви тестуєте виявлення? Моя не підкреслює номер рядка, як ваш (ані стовпець), але натискання посилання переміщує каретку у правильне положення.
lkraider

Я виявив проблему, адже якщо номер рядка буде підкреслено, посилання не працюватиме. Це могло б статися в моєму прикладі, коли рядок> 99. Коли відбувається пробіл, ланка правильно розміщує каретку в положенні стовпця.
lkraider

Раніше це працювало у мене .... тепер я отримую "Windows не може знайти 'файл: /// C: \ Use ...".
Ден Циборовський - MSFT

3

Спочатку встановіть пілінт з крапкою:

pip install pylint

Вам потрібно відкрити «Налаштування> Інструменти> Зовнішні інструменти» та натиснути кнопку «+» на PyCharm.

Ось приклад з хорошими налаштуваннями.


2
Я наслідував приклад, але під час роботи отримав помилку. Не вдається запустити програму "pylint" (у каталозі "/ Users / RodChen / my_project"): помилка = 2, такого файлу чи каталогу немає. Я впевнений, що каталог існує, оскільки я використовую $ FileDir $ як робочий каталог. Як я можу це виправити? Дякую.
Род Чен,

Я думаю, ви використовуєте вікна. Чи працює пілінт на терміналі?
ikreb

2
Я використовую Mac. Я встановив pylint лише у віртуальному середовищі, в якому я працюю, і pylint не працює на звичайному терміналі. Після того, як я встановив pylint в систему, pylint запрацював у PyCharm! Дякую!
Род Чен,

@RodChen У мене також є pylintвстановлення у віртуальному середовищі. Я вказав PyCharm на інтерпретатор python мого віртуального середовища, і, здається, він працює нормально. pylintХоча я дуже новачок у цьому , тому, можливо, ви маєте на увазі якусь певну функціональність, про яку я не знаю.
Марк,

3

Роберто Лейнарді створив пілінт-плагін для pycharm, який справді працює та добре інтегрується в IDE:

Легко встановлюється зі сховищ, повні інструкції наведено на: https://github.com/leinardi/pylint-pycharm

Наразі я маю короткий, але щасливий досвід! Похвала Роберто.


1

Завдяки інформації тут та оновленій документації від PyCharm мені вдалося змусити це добре працювати, а також використовувати віртуальне середовище для проекту (гарантуючи, що будь-які пакунки можуть бути розгорнуті у віртуальному середовищі та не потребують глобального розгортання) ).

Беручи те, що пропонував lkraider раніше, але з невеликими змінами:

  1. Переконайтеся, що ви встановили pylint у віртуальному середовищі. Зверніть увагу, переконайтесь, що при створенні віртуального середовища ви не вибрали «Спадкувати глобальні пакети сайтів». Якщо ви це зробите, пілінт в кінцевому підсумку стане глобальним, і це не буде працювати.

  2. Додайте новий зовнішній інструмент і налаштуйте. Це дещо відрізняється від того, що надав lkraider. Для одного я хотів, щоб він виглядав більше як звичайний вивід пілінта, тому мій шаблон msg (і вихідний фільтр) дещо відрізняється. Кожен до свого. Друга зміна є більш важливою для виконання pylint на основі віртуального середовища, тобто параметру програми, де я використовую $ PyInterpreterDirectory $.

Program: $PyInterpreterDirectory$/pylint
Arguments: "--msg-template='{abspath}:{line:5d}:{column}: {msg_id}: {msg} ({symbol})'" --output-format=colorized "$FilePath$"
Working directory: $ProjectFileDir$
Output filters: $FILE_PATH$:\s*$LINE$\:\s*$COLUMN$:

Зовнішній інструмент для пілінгу


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