问题描述
我正在尝试注册在 colab 上运行的 jupyter 笔记本的单元格内定义的环境。我的问题与入口点有关。某些模块必须在冒号之前指定。但是我怎么知道底层 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