Ошибка дублирующего флага: флаг определяется дважды: первый в пакете и второй в модуле внутри пакета - PullRequest
0 голосов
/ 27 февраля 2019

В трассировке стека достаточно ясно о причине ошибки.Но я не могу понять причину.У меня есть пакет abc, и внутри пакета есть модуль с именем abc.py.В abc.py я определил флаги.Когда я запускаю код, я получаю сообщение об ошибке: DuplicateFlag Error: The flag 'config' is defined twice: First from abc, Second from abc/abc.py.

Я не импортировал модуль abc.py в другие файлы.Может ли эксперт по питону сказать мне, в чем может быть проблема?

1 Ответ

0 голосов
/ 04 марта 2019

Я не уверен, что является причиной проблемы.Но исправление для этого состоит в том, чтобы удалить все атрибуты в флагах, прежде чем вы фактически определите флаги, используя следующий код:

for name in list(flags.FLAGS):
      delattr(flags.FLAGS,name)

Надеюсь, это поможет.Любой, кто знает действительную причину проблемы, может ответить на нее точно.

ОБНОВЛЕНИЕ: причина частично решена в этом Запуск модуля в пакете, импорт подпакета .Вывод: если вы часто запускаете модуль в виде сценария, вам, вероятно, следует создать новый модуль сценария верхнего уровня, который импортирует модуль из пакета и запускает нужный код.Это предотвращает потенциальное существование модуля, заполненного кодом дважды, а также позволяет извлечь выгоду из загрузки кэшированного байт-кода из файла .pyc (что может ускорить запуск вашей программы).

Мой пакет имелциклическая зависимость.Следовательно, это может быть проблемой.Мне даже не нужно было удалять атрибут после того, как я переместил свой основной скрипт из пакета и запустил его нормально.

...