Невозможно установить пользовательский плагин flake8 «FailedToLoadPlugin» - PullRequest
0 голосов
/ 20 января 2020

Я пытался следовать руководству, Создание собственного плагина Flake8 \ | Dunderdo c, чтобы научиться создавать плагин Flake8.

После завершения урока я получил файлы установки и проверки, как показано ниже:

setup.py

import setuptools

setuptools.setup(
   name='flake8-picky',
   license='MIT',
   version='0.0.1',
   description='Plugin to comply with my picky standards',
   author='Valdir Stumm Junior',
   author_email='stummjr@gmail.com',
   url='http://github.com/stummjr/flake8-picky',
   py_modules=['flake8_picky'],
   entry_points={
       'flake8.extension': [
           'PCK0 = picky_checker:PickyChecker',
       ],
   },
   install_requires=['flake8'],
   classifiers=[
       'Topic :: Software Development :: Quality Assurance',
   ],
)

picky_checker.py

import ast


class ForbiddenFunctionsFinder(ast.NodeVisitor):
    forbidden = ['map', 'filter']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.issues = []

    def visit_Call(self, node):
        if not isinstance(node.func, ast.Name):
            return

        if node.func.id in self.forbidden:
            msg = "PCK01 Please don't use {}()".format(node.func.id)
            self.issues.append((node.lineno, node.col_offset, msg))



class PickyChecker(object):
    options = None
    name = 'picky_checker'
    version = '0.1'

    def __init__(self, tree, filename):
        self.tree = tree
        self.filename = filename

    def run(self):
        parser = ForbiddenFunctionsFinder()
        parser.visit(self.tree)

        for lineno, column, msg in parser.issues:
            yield (lineno, column, msg, PickyChecker)

example.py

data = list(range(100))

x = map(lambda x: 2 * x, data)
print(x)

y = filter(lambda x: x % 2 == 0, data)
print(y)

После завершения установки Плагин успешно, я выполнил команду flake8 example.py и получил следующую ошибку:

flake8.exceptions.FailedToLoadPlugin: Flake8 failed to load plugin "PCK0" due to No module named picky_checker.

Что это за ошибка и как я могу это исправить? Спасибо

1 Ответ

1 голос
/ 20 января 2020

ваш setup.py имеет неверный формат и не включает выбранный вами пакет

    py_modules=['flake8_picky'],

должен быть

    py_modules['picky_checker'],

без этого, setuptools не будет включать ваш модуль в полученный пакет который собирается / устанавливается


в качестве отступления, рекомендуется совмещать имя вашего модуля с вашим пакетом (хотя, конечно, не обязательно), поэтому вместо этого я бы переименовал ваш модуль в flake8_picky.py изменения setup.py)

...