gym注册customer env 报错:Attempted to register malformed environment ID:My_env

跟随着gym的教程,准备把自己写的环境注册在gym的envs上面,
过程如下:

第⼀步,将我们⾃⼰的环境⽂件(笔者创建的⽂件名为 Myenv.py,类名为ReEnv )
拷⻉到你的gym安装⽬录/gym/envs/classic_control⽂件夹中(拷⻉在此
⽂件夹中是因为要使⽤rendering模块。当然本⽅法并不是唯⼀的,也可以
采⽤其他办法。)。
第⼆步,打开该⽂件夹(第⼀步中的⽂件夹)下的__init__.py⽂件,
在⽂件末尾加⼊语句:

from gym.envs.classic_control.Myenv import ReEnv 

第三步,进⼊⽂件夹的gym安装⽬录/gym/gym/envs,打开该⽂件夹下
的__init__.py⽂件,添加代码:

register(
    id='My_env',
    entry_point='gym.envs.classic_control:ReEnv ',
)

反复对比官方文档发现并无纰漏,但是仍然import gym就报错:

Error: Attempted to register malformed environment ID: My_env. (Currently all IDs must be of the form ^(?:[\w:-]+\/)?([\w:.-]+)-v(\d+)$.)

后来经过一顿琢磨:
register这个id可以随便写,但是要注意的是,id中最后要带 -v() 括号里为数值,满足此格式才行,最终改为:

register(
    id='My_env-v0',
    entry_point='gym.envs.classic_control:ReEnv ',
)

成功!

此时又发现一个问题:
比如,注册一个环境是报错:

Error: Attempted to register malformed environment ID: My_env. (Currently all IDs must be of the form ^(?:[\w:-]+\/)?([\w:.-]+)-v(\d+)$.)

将注册相关代码注释掉,不重启控制台的话,会报错:

Error: Cannot re-register id: Copy-v0

其中Copy-v0是gym源码中默认的第一个环境,此时需要重启控制台,即可
这个问题反映了,对于python的一个包来说,一次import,后续再在控制台import 同名包,则实际不会将新改动的同名包加载进入内存,还是旧包,所以改动包的源码后,需要重启或打开新的控制台来导入

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值