AttributeError: module ‘tensorflow.python.platform.flags’ has no attribute ‘DEFINE_enum’ 是新版本组件才有的枚举类型吗
杨飞 2018-4-16 16:47:48
DEFINE_enum 这个 flag 是 1.5 版本以后才有的。
这里面好像没有它的定义或声明,不过你看 16 行有条注释:
“”“Import router for absl.flags. See https://github.com/abseil/abseil-py.”“”
没错,它是从 absl 这个模块 import 进来的。在 25 行:
from absl.flags import * # pylint: disable=wildcard-import
定义在这里:
是的,隐藏的好深!!!
这里不光定义的有 DEFINE_enum,还有 DEFINE_list,DEFINE_spaceseplist,DEFINE_Multi,DEFINE_multi_string,DEFINE_multi_integer,DEFINE_multi_float,DEFINE_multi_enum,DEFINE_alias 等等各种 flag~
libertatis 发表于 2018-4-16 18:59:28
bingo 这个貌似就是 google 内部用的 flag 库
舟 3332 发表于 2018-4-16 20:16:36
不过,对于 1.5 以前的版本,也是可以用 DEFINE_enum 这个 flag 的。比如我是 1.2 的版本。
首先安装 absl 包:
pip install absl-py
安装完以后,就可以在我们的代码中使用 DEFINE_enum 啦。
就像在 flags.py 源码中一样:
from absl.flags import *
import 进来以后就可以直接使用啦:
DEFINE_enum (…)
下面是 absl 模块的 GitHub 地址:
libertatis 2018-4-16 20:57