Подтвердить что ты не робот

Как я могу проверить неиспользуемый импорт во многих файлах Python?

Помню, когда я развивался на С++ или Java, компилятор обычно жалуется на неиспользуемые методы, функции или импорт. В моем проекте Django у меня есть куча файлов Python, которые прошли через несколько итераций. Некоторые из этих файлов содержат несколько строк инструкции импорта в верхней части страницы, и некоторые из этих импортных данных больше не используются. Есть ли способ найти эти неиспользуемые импорты, кроме того, что вы просматриваете каждый из них в каждом файле?

Все мои входы явные, я обычно не пишу from blah import *

4b9b3361

Ответ 1

PyFlakes (похож на Lint) даст вам эту информацию.

pyflakes python_archive.py

Example output:
python_archive.py:1: 'python_archive2.SomeClass' imported but unused

Ответ 2

Используйте такой инструмент, как pylint, который будет сигнализировать эти дефекты кода (среди многих других).

Выполнение таких проверок "перед запуском" затруднено на языке с динамической типизацией, но pylint делает потрясающую работу по перехвату этих опечаток/остатков от рефакторинга и т.д.

Ответ 3

Посмотрите PyChecker. Это инструмент для отладки и возможность поиска неиспользуемых переменных и модулей.

Ответ 4

Я успешно использовал pyflakes и хотел автоматически удалить неиспользуемые импорты.

Недавно я нашел autoflake:

  • Использует pyflakes для проверки.
  • По умолчанию удаляются неиспользуемые стандартные библиотеки и избыточные операторы pass.
  • Имеются варианты удаления других неиспользуемых импортов и неиспользуемых переменных.

Ответ 5

Если вы используете eclipse IDE с pydev и mylyn, он обеспечивает автоматическую проверку и выделение неиспользуемых импортов, среди прочего. Он также интегрируется с пилинтом.

Ответ 6

autoflake - улучшенная версия pyflakes с дополнительными опциями. Он использует пайфлукс под капотом, я бы порекомендовал использовать его вместо того, чтобы использовать пайфлукс напрямую.

Ответ 7

Вы можете использовать следующие настройки пользователя:

"python.linting.pylintEnabled": true,
"python.linting.pylintArgs": [
    "--enable=W0614"
]

Но я думаю, вам нужно просмотреть все файлы самостоятельно и нажать "сохранить".

Ответ 8

Я согласен с использованием PyFlakes. Это как Linting, но это исключает ошибки стиля.

ОБНОВИТЬ

Как запустить: pyflakes <your python file> или pyflakes <your folder containing python files>

БЫТЬ ОСТОРОЖЕН!!!

Если вы запускаете его только с помощью команды pyflakes, это займет очень много времени, как будто оно никогда не заканчивается. Моя гипотеза состоит в том, что он пытается проверить каждый файл python в вашей машине/папке, когда вы так его называете.

Ответ 9

Я использую flake8 для проверки стиля, а затем isort + autoflake для автоматического удаления неиспользованного импорта.

Проверить: Посмотреть больше на flake8 vs pyflake

pip install flake8 --user
flake8 .

Переформатировать: узнать больше о том, почему isort + автофлейк

pip install isort autoflake --user
isort -rc -sl .
autoflake --remove-all-unused-imports -i -r .
isort -rc -m 3 .