如何在Jupyter内核(特别是Google Colab)中修复cmake安装?

时间:2019-01-13 10:35:30

标签: cmake jupyter-notebook jupyter google-colaboratory

我正在尝试让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 :(得分:0)

很难说出发生了什么而没有更多细节,但是如果要将.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. 共享一个可重现此问题的最小笔记本。