当前位置: 首页 > 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博客

相关文章:

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

问题描述 今天在运行openai给出的ppo2的baseline的时候遇到了以下bug&#xff1a; File "/root/code/baselines_openai/baselines/common/cmd_util.py", line 12, in <module> from gym.wrappers import FlattenObservation, FilterObservation ImportErr…...

大件传输的9种方法

不知道你有没有试过用电子邮件进行大文件传输&#xff0c;由于文件大小的限制&#xff0c;往往会发送失败。同时&#xff0c;一些文件共享服务对传输的文件有大小限制&#xff0c;使得你无法与朋友分享电影片段或向客户展示你的工作样本。还有一些要求你注册一个账户&#xff0…...

将vue2的项目《后台管理模式》转变为vue3版本 (一)

本篇主要讲了将v2项目转变为v3版本&#xff0c;以本人经验愿于各位分享 希望大家可以一起交流&#xff01;&#xff01;&#xff01;&#xff01; 文章目录一、app 出口位置二 、 index.js 路由配置三、package.json 文件四、 main.js 既然安装插件那就需要引入五、 跨域问题总…...

苹果手机怎么下载手机铃声?图文教程,快速学会

很多小伙伴喜欢使用苹果手机&#xff0c;可是苹果手机里的铃声自己并不是很喜欢听&#xff0c;想要下载一些好听的歌曲更换自己的手机铃声。苹果手机怎么下载手机铃声&#xff1f;别着急&#xff0c;今天小编以图文的方式&#xff0c;教教大家如何使用苹果手机下载手机铃声。 苹…...

AJAX笔记(二)Fetch和axios

1、Fetch 1.1、XMLHttpRequest的缺陷 1.2、fetch的get写法 1.3、fetch的post写法 1.4、fetch的put写法 1.5、fetch的patch写法 1.6、fetch的delete写法 2、axios 2.1、axios的介绍 2.2、axios的get写法 2.3、axios的post写法&#xff08;图一json写法和图二三form写法&#x…...

TOTOLINK NR1800X 系列 CVE 分析

漏洞简介 TOTOLINK NR1800X最近报了一些cve&#xff0c;现主要对其命令注入进行具体分析&#xff0c;以及对其登录绕过进行分析。 固件下载地址&#xff1a;https://www.totolink.net/home/menu/detail/menu_listtpl/download/id/225/ids/36.html 环境搭建 固件提取 binwa…...

IDEA如何将代码进行上下左右移动,改变位置

鼠标光标定位快捷键 1.ctrl Home:定位到一页代码的行头 2.ctrl end :定位到一页代码的行末 3.home&#xff1a;定位到一行的行头 4.end&#xff1a;定位到一行的行末 有的小键盘可能没有home和end键&#xff0c;就需要自行修改IDEA中的快捷键或者使用键盘映射的方法修改。 将…...

【Java 面试合集】HashMap中为什么引入红黑树,而不是AVL树呢

HashMap中为什么引入红黑树&#xff0c;而不是AVL树呢1. 概述 开始学习这个知识点之前我们需要知道&#xff0c;在JDK1.8 以及之前&#xff0c;针对HashMap有什么不同。 JDK 1.7的时候&#xff0c;HashMap的底层实现是数组 链表JDK1.8的时候&#xff0c;HashMap的底层实现是数…...

深度学习Week15-common.py文件解读(YOLOv5)

目录 简介 一.基本组件 1.1autopad 1.2Conv 1.3 Focus 1.4Bottleneck 1.5BottleneckCSP 1.6 C3 1.7 SPP 1.8Concat 1.9Contract、Expand 二、重要类 2.1非极大值抑制&#xff08;NMS&#xff09; 2.2AutoShape 2.3 Detections 2.4 Classify 三、实验 &#x1f…...

qemu的snapshot快照功能的详细使用介绍

快照功能还是蛮有趣的&#xff0c;就是资料比较少&#xff0c;这边万能菜道人特意整理了一下。参考内容&#xff1a;QEMU checkpoint(snapshot) 使用-pudn.comKVM&QEMU学习笔记&#xff08;二&#xff09;-蒲公英云 (dandelioncloud.cn)在线迁移存储 - 爱码网 (likecs.com)…...

谷歌关键词优化多少钱【2023年调研】

本文主要分享Google关键词排名优化的一些成本调研&#xff0c;方便大家参考。 本文由光算创作&#xff0c;有可能会被剽窃和修改&#xff0c;我们佛系对待这种行为吧。 今年2023年了&#xff0c;谷歌关键词优化到底要多少钱&#xff1f; 答案是&#xff1a;价格在2w~25w左右…...

凸包及其算法

概念 凸包&#xff1a;一个能够将所有给定点围住的最小周长封闭图形。 稳定凸包&#xff1a;在当前组成凸包的点集 V0V_0V0​ 中新增一个不在凸包上的点&#xff0c;形成新点集 V1V_1V1​&#xff0c;若可以使 V1V_1V1​ 中所有点都在 V1V_1V1​ 的点的凸包上&#xff0c;则这…...

计算机网络学习笔记(二)物理层

物理层&#xff08;传输比特0/1&#xff09;基本概念 物理层下的传输媒体 1. 导引型 同轴电缆&#xff0c;双绞线&#xff08;绞合可抵御干扰&#xff09;&#xff0c;光纤&#xff0c;电力线 2. 非导引型&#xff08;调制振幅 频率 相位&#xff09; 无线电波&#xff0c;微…...

为什么职称要提前准备?

职称反映专业技术人员的学术和技术水平、工作能力的工作成就&#xff0c;具有学衔、岗位两种性质。目前中国现状下&#xff0c;职称主要代表社会地位&#xff0c;就业经验&#xff0c;职称等级越高&#xff0c;越容易得到更高的社会经济和福利待遇。 职称通过申报、评审的形式…...

MyBatis详解1——相关配置

一、什么是MyBatis 1.定义&#xff1a;是一个优秀的持久层框架&#xff08;ORM框架&#xff09;&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis是一个用来更加简单的操作和读取数据库的工具。 2.支持的操作方式&#xff1a;xml或者注解实现操作&#xff08;xm…...

字节青训营——秒杀系统设计学习笔记(三)

限流算法 限流顾名思义&#xff0c;就是对请求或并发数进行限制&#xff1b;通过对一个时间窗口内的请求量进行限制来保障系统的正常运行。如果我们的服务资源有限、处理能力有限&#xff0c;就需要对调用我们服务的上游请求进行限制&#xff0c;以防止自身服务由于资源耗尽而…...

每天一道大厂SQL题【Day10】电商分组TopK实战

每天一道大厂SQL题【Day10】电商分组TopK实战 大家好&#xff0c;我是Maynor。相信大家和我一样&#xff0c;都有一个大厂梦&#xff0c;作为一名资深大数据选手&#xff0c;深知SQL重要性&#xff0c;接下来我准备用100天时间&#xff0c;基于大数据岗面试中的经典SQL题&…...

最全的免费录屏工具,这 19 款录屏软件绝对值得你收藏

屏幕录制软件可让您捕获屏幕以与他人共享&#xff0c;创建与产品相关的视频、教程、课程、演示、视频等。这些软件是您能够从网络摄像头和屏幕录制视频。以下是精选的顶级屏幕录像机列表。 适用于 PC 的19 款免费录屏屏幕录像机软件 1&#xff09;奇客免费录屏 奇客免费录屏&am…...

vb.net计算之.net core基础(2)-发布应用

目录 发布程序测试运行运行方式发布程序 首先,将编译配置改为Release 然后,发布应用,在生成菜单下。 选择发布到文件夹 继续选择文件夹 接着,完成 关闭 点击发布标签栏的发布按钮...

微服务项目【商品秒杀接口压测及优化】

生成测试用户 将UserUtils工具类导入到zmall-user模块中&#xff0c;运行生成测试用户信息&#xff0c;可根据自身电脑情况来生成用户数量。 UserUtils&#xff1a; package com.xujie.zmall.utils;import com.alibaba.nacos.common.utils.MD5Utils; import com.fasterxml.j…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

UE5 学习系列(三)创建和移动物体

这篇博客是该系列的第三篇&#xff0c;是在之前两篇博客的基础上展开&#xff0c;主要介绍如何在操作界面中创建和拖动物体&#xff0c;这篇博客跟随的视频链接如下&#xff1a; B 站视频&#xff1a;s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

鸿蒙(HarmonyOS5)实现跳一跳小游戏

下面我将介绍如何使用鸿蒙的ArkUI框架&#xff0c;实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...