Pylint жалуется при импорте в правильном порядке

Я думал, что правильный порядок импорта в Python был описан первым ответом на вопрос: как правильно сортировать Python `import x` и` из операторов x import y`?

Следовательно, этот код должен быть правильным:

import os
import time
import yaml

from collections import OrderedDict
from xtesting.core import testcase

Однако, когда я запускаю Pylint, я получаю:

C:  5, 0: standard import "from collections import OrderedDict" should be placed before "import yaml" (wrong-import-order)

Так что я думаю, что yaml не является стандартной библиотекой. Тогда должен ли быть правильный способ сделать это (даже если он уродливее и менее читабелен)?

import os
import time
from collections import OrderedDict
import yaml

from xtesting.core import testcase

1 ответ

Решение

PyYAML не является частью стандартной библиотеки Python и импортирует из стандартной библиотеки, будь то универсальный (import os) или конкретный (from collections import OrderedDict) должен прийти первым.

IMO, вы должны лексикографически отсортировать имена модулей в разделах и отделить разделы пустой строкой:

from collections import OrderedDict
import os
import time

from xtesting.core import testcase
import yaml

Есть некоторые, которые хотят, чтобы общие в каждом разделе были на первом месте:

import os
import time
from collections import OrderedDict

import yaml
from xtesting.core import testcase

Это выглядит лучше, но позволяет упростить просмотр определенных импортов после длинных общих списков. И это также отделяет общий и специфический импорт от одного и того же модуля, что IMO плохо:

import yaml
from xtesting.core import testcase
from yaml import safe_load
Другие вопросы по тегам