Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重复标志错误:标志定义了两次:第一次在包中,第二次在包内的模块中_Python_Python 3.x_Module_Package_Flags - Fatal编程技术网

Python 重复标志错误:标志定义了两次:第一次在包中,第二次在包内的模块中

Python 重复标志错误:标志定义了两次:第一次在包中,第二次在包内的模块中,python,python-3.x,module,package,flags,Python,Python 3.x,Module,Package,Flags,stacktrace非常清楚错误的原因。但我无法找出根本原因。我有一个名为abc.py的包abc,包中有一个模块。在abc.py中,我定义了标志。当我运行代码时,我得到一个错误,说DuplicateFlag error:flag'config'定义了两次:第一次来自abc,第二次来自abc/abc.py。 我没有在其他文件中导入模块abc.py。python专家能告诉我问题出在哪里吗?我不确定是什么导致了这个问题。但修复方法是在使用以下代码实际定义标志之前删除标志中的所有属性: for name

stacktrace非常清楚错误的原因。但我无法找出根本原因。我有一个名为abc.py的包abc,包中有一个模块。在abc.py中,我定义了标志。当我运行代码时,我得到一个错误,说
DuplicateFlag error:flag'config'定义了两次:第一次来自abc,第二次来自abc/abc.py。


我没有在其他文件中导入模块abc.py。python专家能告诉我问题出在哪里吗?

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

for name in list(flags.FLAGS):
      delattr(flags.FLAGS,name)
我希望这有帮助。任何人如果知道问题的真正原因,都欢迎准确回答

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

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