当前位置: 首页 > news >正文

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博客

http://www.lryc.cn/news/8269.html

相关文章:

  • 大件传输的9种方法
  • 将vue2的项目《后台管理模式》转变为vue3版本 (一)
  • 苹果手机怎么下载手机铃声?图文教程,快速学会
  • AJAX笔记(二)Fetch和axios
  • TOTOLINK NR1800X 系列 CVE 分析
  • IDEA如何将代码进行上下左右移动,改变位置
  • 【Java 面试合集】HashMap中为什么引入红黑树,而不是AVL树呢
  • 深度学习Week15-common.py文件解读(YOLOv5)
  • qemu的snapshot快照功能的详细使用介绍
  • 谷歌关键词优化多少钱【2023年调研】
  • 凸包及其算法
  • 计算机网络学习笔记(二)物理层
  • 为什么职称要提前准备?
  • MyBatis详解1——相关配置
  • 字节青训营——秒杀系统设计学习笔记(三)
  • 每天一道大厂SQL题【Day10】电商分组TopK实战
  • 最全的免费录屏工具,这 19 款录屏软件绝对值得你收藏
  • vb.net计算之.net core基础(2)-发布应用
  • 微服务项目【商品秒杀接口压测及优化】
  • 1997. 访问完所有房间的第一天
  • 通达信交易接口以什么形式执行下单的?
  • CobaltStrike上线微信通知
  • 喜茶、奈雪的茶“花式”寻生路
  • Xstream使用教程
  • 【正点原子FPGA连载】第十一章PL SYSMON测量输入模拟电压 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
  • 纷享销客百思特 | 数字化营销赋能企业新增长沙龙圆满落幕
  • oracle查看具体表占用空间 oracle查看表属于哪个用户
  • 2.Visual Studio下载和安装
  • 「4」线性代数(期末复习)
  • IDEA中使用tomcat8-maven-plugin插件