注册在 jupyter notebook 单元格内定义的 gym 环境

Register gym environment that is defined inside a jupyter notebook cell

我正在尝试在 colab 上注册已在 jupyter notebook 运行ning 的单元格内定义的环境。我的问题与 entry_point 有关。某些模块必须在冒号之前指定。但是我怎么知道底层 colab notebook 的模块名称呢?是否有一些解决方法可以将我的自定义环境包装在一个模块中而不将代码移动到另一个文件?我宁愿把所有东西都放在整个笔记本里。

try:
  gym.envs.register(
      id='myenv-v0',
      entry_point=':MyEnv',
      max_episode_steps=320
  )
except:
    pass

如果我调用 gym.make("myenv-v0")

ModuleNotFoundError: No module named 'base'

try块是因为一个evnrinoment id不能被注册两次。可能会发生我再次 运行 所有笔记本单元格。

写完这个问题我终于想出了正确的关键词来进行适当的搜索以找到解决方案。

可以使用

检索底层模块名称
import sys
sys.modules[__name__]

因此入口点的模块名称是“main”。

try:
  gym.envs.register(
      id='myenv-v0',
      entry_point='__main__:MyEnv',
      max_episode_steps=320
  )
except:
    pass