use*_*484 3 python-3.x openai-gym
我想创建自己的健身房环境。我已按照此处解释的步骤进行操作: https: //github.com/openai/gym/blob/master/docs/creating-environments.md。根据他们的建议,我创建了环境(链接:https://drive.google.com/open? id=1RmcSBZYKCARaNsdlOsACrk9ls8snqxlj )。安装并运行后,将创建环境并显示打印输出“已创建,步骤”。但是,当我再次按下“运行”按钮(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
Run Code Online (Sandbox Code Playgroud)
小智 5
我今天也遇到了同样的问题。我是这样解决的:
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
Run Code Online (Sandbox Code Playgroud)
这将消除foo_env当前 python 会话中的原始内容,无论是在 Jupyter 实验室还是在终端中。