【问题标题】:Getting UnparsedFlagAccessError when trying to import glog in python尝试在 python 中导入 glog 时出现 UnparsedFlagAccessError
【发布时间】:2016-06-02 04:28:03
【问题描述】:

我正在尝试在我的 python 代码中使用 glog,当我尝试导入时,它会引发以下错误:

/usr/local/lib/python2.7/dist-packages/glog.py:171: RuntimeWarning: 
Trying to access flag verbosity before flags were parsed. This will raise 
an exception in the future. 
setLevel(FLAGS.verbosity)
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/glog.py", line 171, in 
<module>
setLevel(FLAGS.verbosity)
File "/usr/local/lib/python2.7/dist-packages/gflags/flagvalues.py", line 
390, in __getattr__
traceback.print_stack()
E0602 09:45:07.674463 4695 flagvalues.py:399] Trying to access flag 
verbosity before flags were parsed.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/gflags/flagvalues.py", line 
391, in __getattr__
raise exceptions.UnparsedFlagAccessError(error_message)
UnparsedFlagAccessError: Trying to access flag verbosity before
flags were parsed.

我的代码如下。

import gflags 
import glog as log

我在网上搜索过,但没有任何关于 python 版本的 glog 的信息。我认为这个错误必须与 gflags 和 glog 一起做。谁能解释一下出了什么问题?

【问题讨论】:

  • 我有同样的问题,我对 Python 还不是很熟悉,但想知道这是否是 glog 中的版本冲突问题。 glog 的示例已经很老了,并且一些类方法会抛出未找到的错误。

标签: python python-2.7 python-3.x glog gflags


【解决方案1】:

我也有同样的问题。检查代码后,似乎是glog的某种错误。

当import glog被拦截时,它假定gflags.GFLAGS已经被初始化,并尝试读取gflags.GFLAGS.verbosity,实际上大多数情况下并不能保证被初始化。

例如下面的代码会抛出异常:

import gflags
import glog
import sys

if __name__ == "__main__":
    gflags.FLAGS(sys.argv)
    # do something.

由于import glog被拦截,所以读取FLAGS.vebosity,但是由于glfags.FLAGS(sys.argv)还没有执行,所以从FLAGS读取会失败。

所以我们必须确保在 GFLAGS 初始化后拦截 import gflags,我能想到的唯一解决方案是将 import glog 放在另一个文件中而不是主 py 脚本中。

例如,在主脚本中:

import gflags
import sys
# DON'T IMPORT ANYTHING that evolves of 'glog' 

FLAGS = gflags.FLAGS

if __name__ == "__main__":
    argv = FLAGS(sys.argv)
    # import any modle that uses 'glog'
    import your_other_module
    your_other_module.do_something()    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-16
    • 2017-06-11
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 2020-03-21
    • 2022-10-22
    • 1970-01-01
    相关资源
    最近更新 更多