Как исправить установку cmake в ядрах Jupyter, в частности в Google Colab? - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь запустить OpenAI roboschool в Google Colab (есть настройка виртуального дисплея, которая записывает среду во время обучения и отображает видео после). Библиотека roboschool будет импортирована, но среды не отображаются должным образом (вообще), когда я запускаю:

import roboschool, gym; 
print("\n".join(['- ' + spec.id for spec in 
gym.envs.registry.all() if spec.id.startswith('Roboschool')]))

список пуст, и он должен включать среды.

Когда cmake связывает dll, это происходит с переменными окружения? Переменные окружения в Colab не работают как обычно, и я думаю, что это может быть проблемой. Я не знаю достаточно, чтобы знать наверняка.

Этот вывод мне кажется подозрительным, не похоже, что путь времени выполнения будет удален. Их несколько, поэтому я взял, к примеру, только две.

-- Set runtime path of "/content/roboschool/roboschool/cpp- 
household/bullet_local_install/lib/libBulletDynamics.so.2.87" to "" 
-- Set runtime path of "/content/roboschool/roboschool/cpp- 
household/bullet_local_install/lib/libBullet3Geometry.so.2.87" to "

Вот последовательность команд.

cmake -DBUILD_SHARED_LIBS=ON -DUSE_DOUBLE_PRECISION=1 - 
  DCMAKE_INSTALL_PREFIX:PATH=/content/roboschool/roboschool/cpp- 
  household/bullet_local_install -DBUILD_CPU_DEMOS=OFF - 
  DBUILD_BULLET2_DEMOS=OFF -DBUILD_EXTRAS=OFF  -DBUILD_UNIT_TESTS=OFF - 
  DBUILD_CLSOCKET=OFF -DBUILD_ENET=OFF -DBUILD_OPENGL3_DEMOS=OFF ..
make -j4
make install

Есть ли способ, которым я могу переопределить способ определения путей для связанных библиотек, чтобы они связывались с правильными путями, если это правильно? Похоже, что заглядывание в RPATH может быть шагом в правильном направлении?

Заранее спасибо. Пожалуйста, дайте мне знать, если необходимы дополнительные детали.

1 Ответ

0 голосов
/ 16 января 2019

Трудно сказать, что происходит без более подробной информации, но если вы собираете .so в нестандартное место, которое вы хотите видеть во время выполнения python, вы должны как-то сообщить среде выполнения о расположении .so. Догадываясь на основе предоставленных вами фрагментов, возможно, это (возможно, после перезапуска среды выполнения (ctrl-m-period)) разблокирует вас:

import os
os.environ['LD_LIBRARY_PATH'] = '/content/roboschool/roboschool/cpp-household/bullet_local_install/lib:' + os.environ['LD_LIBRARY_PATH']

Если это не сработает для вас, есть два других предложения:

  1. Измените конфигурацию для установки в "стандартные" местоположения
  2. Поделитесь минимальным блокнотом, который воспроизводит проблему.
...