背景
每一个做AI的同学都离不开python,使用python的人都绕不过pycharm,毕竟好的IDE可以极大提高工作效率,最近我在本地自己的电脑远程部署并调试服务器程序的时候发生如下问题:代码可以Deployment到服务器,在服务器上运行没有问题,但是在本地pycharm环境下报错,本地windows10服务器ubuntu。报错信息:ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory。
问题定位
首先,该问题的原因网上绝大多数的人说是因为找不到cuda才会报上述错误,服务器上运行没有问题,本地有问题,那么说明服务器一切配置正常,那么接下来看服务器和本地哪里不一致即可。排除tensorflow和cuda版本不对应问题,因为服务器上运行正常。然后,在服务器终端上进入python环境,查看python版本、包管理工具(使用的是conda还是pip,是否已经激活了虚拟环境),打印sys.path。服务器上打印出来之后和本地win10的pycharm中的设置进行比较,没有问题,python、包管理工具和sys.path、tf.__path__一切设置正常。最后,既然报错是cuda找不到,那服务器可以找到,pycharm找不到是什么原因呢,再继续查找问题,发现如果服务器找不到cuda,可以添加环境变量,因此,再搜是不是pycharm找不到cuda。
根据其他朋友的经验,如果pycharm找不到cuda,只需要设置configuration中的environment variable变量即可。尝试后完美解决。
这个问题花了我半天的时间,愁人啊,必须记录一下。
完整设置路径如下:
1.首先点击run按钮左侧的下拉菜单,选择Edit Configurations...
2.对需要run或者debug的python文件设置Environment variables,点击右侧的三个点,进入编辑。
3.编辑添加下面两条信息,(路径具体值要根据实际服务器路径进行填写):
LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH
CUDA_HOME=/usr/local/cuda-9.0/
最后,完美解决ImportError: libcublas.so.9.0: cannot open shared object file: No such file or directory报错问题。
复盘
这次的问题是一个纯粹的配置问题 ,虽然下次再遇见相同问题能够快速定位,但是其中的定位问题解决问题的逻辑和方法还是需要总结的。首先出现了问题,然后对比没出现问题和出现问题两个环境的异同,逐步缩小查找范围,并逐个排查;最后定位是,谁报错解决谁的问题,我遇到的是win10的pycharm报错了,是pycharm找不到cuda中的文件,因此需要重点搜pycharm找不libcublas.so.9.0文件,根据结论再去搜答案,其实好多人都有遇到这样的问题,只是描述不一致而已,每每解决一个这样的问题,回过头来看,都有“只缘身在此山中”的感慨。