ImportError: cannot import name ‘FlattenObservation‘ from ‘gym.wrappers‘ 解决方案

问题描述

今天在运行openai给出的ppo2的baseline的时候遇到了以下bug:

  File "/root/code/baselines_openai/baselines/common/cmd_util.py", line 12, in <module>
    from gym.wrappers import FlattenObservation, FilterObservation
ImportError: cannot import name 'FlattenObservation' from 'gym.wrappers'

去查阅了[1],将gym版本改成0.15.4,还是没有解决问题。

然后去[2]查了gym0.15.4的文件结构,FlattenObservation是在flatten_observation.py下的,于是将代码改成了以下:

from gym.wrappers.flatten_observation import FlattenObservation, FilterObservation

但出现了新的错误:

Traceback (most recent call last):
  File "/opt/conda/envs/tensorflow_gpu_114/lib/python3.7/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/opt/conda/envs/tensorflow_gpu_114/lib/python3.7/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/root/code/baselines_openai/baselines/run.py", line 12, in <module>
    from baselines.common.cmd_util import common_arg_parser, parse_unknown_args, make_vec_env, make_env
  File "/root/code/baselines_openai/baselines/common/cmd_util.py", line 12, in <module>
    from gym.wrappers.flatten_observation import FlattenObservation
ModuleNotFoundError: No module named 'gym.wrappers.flatten_observation'

很怪,思前想后打算加入绝对路径直接定位包中文件的路径了。

解决方案-第一版

将代码修改为

import sys
sys.path.append('/opt/conda/envs/tensorflow_gpu_114/lib/python3.7/site-packages/gym/wrappers')
import gym
from flatten_observation import FlattenObservation
from filter_observation import FilterObservation

成功解决该bug。

解决方案-第二版

第一版的解决方案毕竟不是长久之计,总不可能所有带gym的文件里都加上绝对路径叭?肯定是有哪里有问题!

受[3]的启发,既然gym可能找不到make这个attribute,自然也可能找不到gym.wrappers.flatten_observation,会不会是我的环境变量里有含有名字是gym的文件夹或文件呢?

果不其然,发现了环境变量中有一条包含了名称是gym的文件夹,注释掉这条环境变量后,重启终端,解决了!

后记

原因有点魔幻,好在解决了,这提醒我们不能随便加入环境变量;在不再使用该项目之后,要及时对该项目的环境变量进行删除。

参考链接

 [1] ImportError: cannot import name 'FlattenObservation' · Issue #1058 · openai/baselines · GitHub

[2] https://github.com/openai/gym/tree/0.15.4/gym/wrappers 

[3] python改错——1.AttributeError: module 'gym' has no attribute 'make'_我叫高好看的博客-CSDN博客

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值