我正在尝试让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可能是朝正确方向迈出的一步?
先谢谢了。请让我知道是否需要其他详细信息。
答案 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']
如果这样做不适合您,则还有另外两个建议: