TensorFlow:IPython 的 GNU 屏幕导致导入错误

TensorFlow: GNU Screen for IPython causes import error

我已经在 AWS EC2 Ubuntu 14.04 系统上从源代码安装了带有 GPU 的 TensorFlow。 使用 ipython 可以成功导入 tensorflow,使用多个 GPU 可以使用 training/testing。 但是,当我使用 screen ipython 时,出现错误:

ImportError: libcudart.so.7.0: cannot open shared object file: No such file or directory.

我怀疑这是环境变量的问题,发现确实如此

import os
os.environ['LD_LIBRARY_PATH']

returns ':/usr/local/cuda/lib64' 没有屏幕,得到 KeyError 有屏幕。

所以我创建了 ~/.ipython/profile_default/startup/fix_ld_lib_path.py 内容

import os
os.environ['LD_LIBRARY_PATH'] = ':/usr/local/cuda/lib64'

现在 screen ipython 提供几乎相同的环境变量(除了一些与终端显示相关但看起来无关的环境变量)但我仍然遇到与以前相同的导入错误。

屏幕取消设置各种环境变量(包括 LD_LIBRARY_PATH,请参阅 this Unix StackExchange answer for details)。正如您所发现的,设置 os.environ['LD_LIBRARY_PATH'] 不会修复 ImportError 因为必须在进程启动时设置此环境变量。解决此问题的最简单方法是如下修改 screen 调用:

$ screen env LD_LIBRARY_PATH=$LD_LIBRARY_PATH ipython

这将在屏幕会话中设置 LD_LIBRARY_PATH,并将根据需要在 ipython 启动之前生效。