Duplicate Flag Error: The flag is defined twice : First in package and Second in module inside package

Duplicate Flag Error: The flag is defined twice : First in package and Second in module inside package

堆栈跟踪非常清楚错误的原因。但我无法弄清楚根本原因。我有一个包 abc,包内有一个名为 abc.py 的模块。在 abc.py 中,我定义了 Flags 。当我 运行 代码时,我收到一条错误消息 DuplicateFlag Error: The flag 'config' is defined twice: First from abc, Second from abc/abc.py.

我没有在其他文件中导入模块abc.py。 python 专家可以告诉我可能是什么问题吗?

我不确定是什么导致了这个问题。但解决方法是在使用以下代码实际定义标志之前删除标志中的所有属性:

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

希望对您有所帮助。欢迎知道问题真正原因的朋友准确解答。

更新:这个 部分回答了原因。要点是:如果您 运行 经常将模块作为脚本使用,您可能应该制作一个新的顶级脚本模块,从包中导入模块并 运行s 所需的代码.这可以防止充满代码的模块可能存在两次,还可以让您受益于从 .pyc 文件加载的缓存字节码(这可能会使您的程序启动速度更快)。

我的包有循环依赖。因此,这可能是问题所在。在我将主脚本移出包并正常 运行 之后,我什至不需要删除该属性。