Проблема
Когда reset()
-ing-окружение CarRacing-v0 в тренажерном зале OpenAI выглядит следующим образом:
import gym
env = gym.make('CarRacing-v0')
env.reset()
Я получаю ошибку сегмента:
Track generation: 1043..1308 -> 265-tiles track
/usr/bin/python3: Relink `/lib/x86_64-linux-gnu/libbsd.so.0' with `/lib/x86_64-linux-gnu/librt.so.1' for IFUNC symbol `clock_gettime'
Segmentation fault (core dumped)
Мой процесс отладки
- Я думал, что проблема может быть с моей машиной, потому что у меня сегодня были странные проблемы с системными часами. Поэтому я попытался выполнить ту же команду в контейнере docker, созданном из того же образа docker на другом компьютере, и получил ту же ошибку сегмента. Так что я не думаю, что это проблема с моей машиной.
- Я пытался создать и
reset()
создать пару других сред, некоторые в пакете Box2d
, а некоторые вне его. В частности, я попытался LunarLander-v2
(в пределах Box2d
), Bipedal-Walker-v2
(в пределах) и CartPole-v0
(вне Box2d
). Все работало как чудо (как на моей машине, так и на другой машине). - На данный момент я подозреваю, что это может быть ошибка в пакете, соответствующая определенному способу установки зависимостей для библиотеки.
Другой полезный контекст, который может иметь или не иметь отношение
- Я запускаю свой код в Docker контейнере
- В среде OpenAI в тренажерном зале, как правило, иметь внешние зависимости для установки, чтобы заставить их работать. В случае этой среды мне пришлось установить пакет
Box2d
и пакет python-opengl
. Вот весь соответствующий код для репликации моей установки, из моего Dockerfile
:
FROM ubuntu
RUN \
apt-get update -y && \
apt-get install -y \
python-opengl \
python3 \
python3-dev \
python3-pip \
python3-virtualenv \
&& rm -rf /var/lib/apt/lists/*
RUN pip3 install --upgrade pip
RUN pip3 --no-cache-dir install \
gym \
box2d-py
Что может быть причиной этой ошибки сегмента? Это проблема с моей установкой? Или это может быть ошибка в пакете?
Обновление
На самом деле, другие среды Box2d НЕ работают как брелок. Они отлично работают в I Python, но когда я выхожу из I Python после выполнения соответствующего кода, я получаю ошибку сегмента. CartPole-v0
(за пределами Box2d
), однако, этой проблемы не существует.