我想创建自己的健身环境。我已按照此处说明的步骤进行操作:https://github.com/openai/gym/blob/master/docs/creating-environments.md。根据他们的建议,我创建了环境(link:https://drive.google.com/open?id=1RmcSBZYKCARaNsdlOsACrk9ls8snqxlj)。在安装和运行环境之后,将创建环境并显示打印输出“ Created,Step”。但是,当我再次按下“运行”按钮(spyder ide:python3.7)时,它向我显示了“错误:无法重新注册ID:foo-v0”。如果按“重新启动内核”按钮,该问题将暂时消失。但是再次“运行”将显示相同的错误。请帮助我解决这个问题。
runfile('F:/gym-foo/a.py', wdir='F:/gym-foo')
Created
Step
runfile('F:/gym-foo/a.py', wdir='F:/gym-foo')
Reloaded modules: gym_foo, gym_foo.envs, gym_foo.envs.foo_env
Traceback (most recent call last):
File "F:\gym-foo\a.py", line 3, in <module>
env = gym.make('gym_foo:foo-v0')
File "C:\Users\nasif\anaconda3\lib\site-packages\gym\envs\registration.py", line 142, in make
return registry.make(id, **kwargs)
File "C:\Users\nasif\anaconda3\lib\site-packages\gym\envs\registration.py", line 86, in make
spec = self.spec(path)
File "C:\Users\nasif\anaconda3\lib\site-packages\gym\envs\registration.py", line 106, in spec
importlib.import_module(mod_name)
File "C:\Users\nasif\anaconda3\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "F:\gym-foo\gym_foo\__init__.py", line 5, in <module>
entry_point='gym_foo.envs:FooEnv',
File "C:\Users\nasif\anaconda3\lib\site-packages\gym\envs\registration.py", line 139, in register
return registry.register(id, **kwargs)
File "C:\Users\nasif\anaconda3\lib\site-packages\gym\envs\registration.py", line 132, in register
raise error.Error('Cannot re-register id: {}'.format(id))
Error: Cannot re-register id: foo-v0
我今天有同样的问题。我大约有90%的人确定您已经在网上找到了答案,但万一另一个人需要帮助:]
import gym env_dict = gym.envs.registration.registry.env_specs.copy() for env in env_dict: if 'foo' in env: print("Remove {} from registry".format(env)) del gym.envs.registration.registry.env_specs[env] import foo_env
这将在jupyter实验室或终端中摆脱当前python会话中的原始foo_env