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
启动之前生效。
我已经在 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
启动之前生效。