Библиотека OpenAI "gym" выдает ошибку NoneType в env.render () - PullRequest
0 голосов
/ 15 января 2020

Это мой первый раз, когда я работаю с библиотеками машинного обучения, я делал все сам, и когда я это делал, но я предполагаю, что когда все говорят вам, чтобы вы не делали работу самостоятельно, и пусть библиотеки делают это для Вы, в конце концов, вы попробовали, и я попробовал "тренажерный зал" OpenAI на python, мой код очень прост (я нашел его на видео на YouTube, где объясняется, как использовать эту библиотеку, поскольку я понятия не имел, что я получаю)

    import gym

env = gym.make("MountainCar-v0")
env.reset()

done = False

while not done:
    action = 2
    newState, reward, done, _ = env.step(action)
    env.render()

env.close()

этот код возвращает мне эту ошибку:

Traceback (последний вызов был последним): файл "C: \ Users \ user \ PycharmProjects \ TestOnGymLibrary \ venv \ lib \ site-packages \ pyglet__init __. py ", строка 378, в getattr return getattr (self._module, name) AttributeError: у объекта 'NoneType' нет атрибута 'get_default'

Во время При обработке вышеуказанного исключения произошло другое исключение:

Traceback (последний вызов был последним): файл "C: / Users / пользователь / PycharmProjects / TestOnGymLibrary / me / RoeeHerzovich / TestOnGymLibrary

/ ядро .py ", строка 11, в файле env.render ()" C: \ Users \ user \ PycharmProjects \ TestOnGymLibrary \ venv \ lib \ site-packages \ gym \ core.py ", строка 235, при визуализации возвращает себя .env.render (mode, ** kwargs) Файл "C: \ Users \ user \ PycharmProjects \ TestOnGymLibrary \ venv \ lib \ site-packages \ gym \ envs \ classic_control \ mountain_car.py", строка 78, в рендере из gym.envs.classic_control импортировать файл рендеринга "C: \ Users \ user \ PycharmProjects \ TestOnGymLibrary \ venv \ lib \ site-packages \ gym \ envs \ classic_control \ render.py", строка 27, из pyglet.gl import * File "C: \ Users \ user \ PycharmProjects \ TestOnGymLibrary \ venv \ lib \ site-packages \ pyglet \ gl__init __. py", строка 239, в файле импорта pyglet.window "C: \ Users \ user \ PycharmProjects \ TestOnGymLibrary \ venv \ lib \ site-packages \ pyglet \ window__init __. Py ", строка 1896, в файле gl._create_shadow_window ()" C: \ Users \ user \ PycharmProjects \ TestOnGymLibrary \ venv \ lib \ site- packages \ pyglet \ gl__init __. py ", строка 208, в _create_shadow_window _shadow_window = Window (ширина = 1, высота = 1, visible = False) Файл "C: \ Users \ user \ PycharmProjects \ TestOnGymLibrary \ venv \ lib \ site-packages \ pyglet \ window \ win32__init __. py", строка 134, в init super (Win32Window , self). init (* args, ** kwargs) Файл "C: \ Users \ user \ PycharmProjects \ TestOnGymLibrary \ venv \ lib \ site-packages \ pyglet \ window__init __. py", строка 501, в init display = get_platform (). Get_default_display () Файл "C: \ Users \ user \ PycharmProjects \ TestOnGymLibrary \ venv \ lib \ site-packages \ pyglet \ window__init __. Py", строка 1845, в get_default_display вернуть pyglet.canvas.get_display () Файл "C: \ Users \ user \ PycharmProjects \ TestOnGymLibrary \ venv \ lib \ site-packages \ pyglet \ canvas__init____ py", строка 77, в get_display из pyglet. При импорте приложения отображается файл "C: \ Users \ user \ PycharmProjects \ TestOnGymLibrary \ venv \ lib \ site-packages \ pyglet \ app__init __. py", строка 175, в файле event_l oop = EventL oop () " C: \ Users \ user \ PycharmProjects \ TestOnGymLibrary \ venv \ lib \ site-packages \ pyglet \ app \ base.py ", строка 119, в init self.clock = clock.get_default () Файл "C: \ Users \ user \ PycharmProjects \ TestOnGymLibrary \ venv \ lib \ site-packages \ pyglet__init __. Py", строка 384, в getattr import (import_name) Файл "C: \ Users \ user \ PycharmProjects \ TestOnGymLibrary \ venv \ lib \ site-packages \ pyglet \ clock.py", строка 166 , в _default_time_function = time.clock AttributeError: модуль 'time' не имеет атрибута 'clock'

Я пытался искать это в некоторых местах, но я этого не видел ... У меня есть тренажерный зал, Matplotlib и pyglet установлены, я проверил их и даже попытался - обновить их, и он сказал, что он уже обновлен, поэтому я не знаю, что происходит. Может кто-нибудь помочь мне с этим?

Я ценю все ваши комментарии :)

Ответы [ 2 ]

0 голосов
/ 15 января 2020

Кроме time.perf_counter () была еще одна вещь, которую нужно было изменить. Я написал все это здесь. Спасибо всем, кто помог мне здесь

Ответ:

Класс: Clock.py Строка: 166 старый: _default_time_function = time.clock изменен на: _default_time_function = time.perf_counter ()

Класс: Clock.py Ряд: 251 старое: self.next_ts = self.time () изменено на: self.next_ts = self.time

0 голосов
/ 15 января 2020

Истинная ошибка происходит от нижней части трассы, которую вы опубликовали:

_default_time_function = time.clock AttributeError: module 'time' has no attribute 'clock'

Эта ошибка была устранена здесь .

Опции:

Найти, где вызывается time.clock (), и изменить его на time.perf_counter ()

Понизить до 3.7

...