Python 3.x 健身房自定义环境错误:无法重新注册id

Python 3.x 健身房自定义环境错误:无法重新注册id,python-3.x,openai-gym,Python 3.x,Openai Gym,我想创造我自己的健身房环境。我已经按照此处介绍的步骤进行了操作:。根据他们的建议,我创建了环境(链接:)。安装并运行后,将创建环境并显示打印输出“已创建,步骤”。但是,当我再次按下“运行”按钮(spyder ide:python3.7)时,它显示了“错误:无法重新注册id:foo-v0”。如果我按下“重启内核”按钮,问题将暂时消失。但“Run”也会显示相同的错误。请帮我解决这个问题 runfile('F:/gym-foo/a.py', wdir='F:/gym-foo') Created Ste

我想创造我自己的健身房环境。我已经按照此处介绍的步骤进行了操作:。根据他们的建议,我创建了环境(链接:)。安装并运行后,将创建环境并显示打印输出“已创建,步骤”。但是,当我再次按下“运行”按钮(spyder ide:python3.7)时,它显示了“错误:无法重新注册id:foo-v0”。如果我按下“重启内核”按钮,问题将暂时消失。但“Run”也会显示相同的错误。请帮我解决这个问题

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
runfile('F:/gym foo/a.py',wdir='F:/gym foo')
创建
步
运行文件('F:/gym foo/a.py',wdir='F:/gym foo')
重新加载的模块:gym\u foo、gym\u foo.envs、gym\u foo.envs.foo\u env
回溯(最近一次呼叫最后一次):
文件“F:\gym foo\a.py”,第3行,在
env=gym.make('gym\u foo:foo-v0'))
文件“C:\Users\nasif\anaconda3\lib\site packages\gym\envs\registration.py”,第142行,make中
return registry.make(id,**kwargs)
文件“C:\Users\nasif\anaconda3\lib\site packages\gym\envs\registration.py”,第86行,make
spec=self.spec(路径)
文件“C:\Users\nasif\anaconda3\lib\site packages\gym\envs\registration.py”,规范第106行
importlib.import\u模块(模块名称)
导入模块中的文件“C:\Users\nasif\anaconda3\lib\importlib\\ uuuuuu init\uuuuuu.py”,第127行
return _bootstrap._gcd_import(名称[级别:],包,级别)
文件“”,第1006行,在\u gcd\u导入中
文件“”,第983行,在_find_和_load中
文件“”,第967行,在“查找”和“加载”中解锁
文件“”,第677行,在\u加载\u解锁
exec_模块中第728行的文件“”
文件“”,第219行,在“调用”中,删除了“帧”
文件“F:\gym foo\gym\u foo\\uuuuu init\uuuuuuu.py”,第5行,在
入口&u point='gym\u foo.envs:FooEnv',
文件“C:\Users\nasif\anaconda3\lib\site packages\gym\envs\registration.py”,第139行,在寄存器中
返回注册表。注册表(id,**kwargs)
文件“C:\Users\nasif\anaconda3\lib\site packages\gym\envs\registration.py”,第132行,在寄存器中
引发错误。错误('无法重新注册id:{}'。格式(id))
错误:无法重新注册id:foo-v0

我今天也遇到了同样的问题。以下是我解决问题的方法:

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

这将消除当前python会话中的原始
foo_env
,无论是在Jupyter实验室还是在终端上。

我今天也遇到了同样的问题。以下是我解决问题的方法:

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
import gym

env_dict = gym.envs.registration.registry.env_specs.copy()


for env in env_dict:
    if 'CustomEnv-v0' in env:
        print("Remove {} from registry".format(env))
        del gym.envs.registration.registry.env_specs[env]

import envs


env = gym.make('CustomEnv-v0')
env.step()
env.reset()

这将从您当前的python会话中删除原始的
foo_env
,无论是在Jupyter实验室还是在终端上。

我将检查一下it@user1850484有更新吗,巴德?愿意进一步帮助!我会查的it@user1850484有更新吗,巴德?愿意进一步帮助!
import gym

env_dict = gym.envs.registration.registry.env_specs.copy()


for env in env_dict:
    if 'CustomEnv-v0' in env:
        print("Remove {} from registry".format(env))
        del gym.envs.registration.registry.env_specs[env]

import envs


env = gym.make('CustomEnv-v0')
env.step()
env.reset()