我正在尝试调试构建在tensorflow之上的一些计算机视觉代码(比如dcgan)。我在virtualenv中安装了tf_0.10(例如,py1),我使用eclipse + pydev作为IDE。问题是调试器无法找到cuda库,所以我得到如下错误,
ImportError:libcudart.so.8.0:无法打开共享对象文件:没有这样的文件或目录
另一方面,代码在ubuntu命令行上正常工作,而virtualenv中的py1在查找cuda库时没有问题。
在我的eclipse + pydev设置中,我将py intepreter设置为py1, 通过将 eclipse menu-> window-> preference-> intepreters-> python intepreter 设置为
/home/zyuan/tensorflowr010/bin/python2.7
(其中/ home / zyuan / tensorflowr010是virtualenv的根源)
上述解释器的系统PYTHONPATH
也是
/home/zyuan/tensorflowr010/lib/python2.7
/home/zyuan/tensorflowr010/lib/python2.7/lib-dynload
/home/zyuan/tensorflowr010/local/lib/python2.7/site-packages
/home/zyuan/tensorflowr010/lib/python2.7/site-packages
/home/zyuan/tensorflowr010/lib
然后我选择了py1和我的计算机视觉代码dcgan的解释器,
通过设置dcgan - >特性 - > pyDev-interpreter / grammer as py1并在pyDev-PYTHONPATH上添加>外部Librarie /usr/local/cuda/lib64
我还有其他什么吗?
答案 0 :(得分:0)
可以从命令行运行吗?如果没有,这是第一步,如果你已经可以,我的建议是从同一个shell启动Eclipse,然后检查启动它时所有环境变量是否与shell中的变量匹配。
作为一个注释,PYTHONPATH是PyDev中的一个特殊变量,由您在解释器中添加的文件和项目中的源文件夹组成,因此,为了检查PYTHONPATH我的建议是创建一个程序:
import sys
print('\n'.join(sorted(sys.path)))
从命令行和Eclipse内部运行它来比较可能不同的东西(并相应地修复PyDev上的配置)。
此外,在命令行中运行之后,从同一个shell启动Eclipse可能会很好(因此它将继承您在该shell中定义的所有env变量,这可以节省您必须检查许多的时间其他env vars也可能很重要。)
答案 1 :(得分:0)
我遇到了一个类似的问题,即我的GPU已通过tensorflow在命令行上成功访问了我的GPU,但没有蚀过。我有两件事可以尝试解决这一问题。
重新启动Eclipse-如果自上次打开Eclipse以来已对路径进行了更改,则它可能只是对环境有陈旧的看法
在“运行时配置”中,设置必要的环境变量,尤其是CUDA_PATH,以强制设置正确的当前路径,尤其是当您可能有多个CUDA版本时。
您的当前状态可以通过以下方式查看:
import os
print(os.environ)
但是,请注意,在情况1的月食过时的情况下,即使eclipse并不了解当前的事务状态,您仍然可以打印出正确的环境变量。