记录一下遇到的一个奇怪的小问题。

        为了完成导师布置的情感对话的项目,我从github上找了一个模型,然后按照readme在服务器上配置好环境python2.7+tensorflow1.13.1。开始训练的时候发现训练速度很慢,一检查发现没有使用gpu版的tensorflow,于是换成了tensorflow-gpu1.13.1。

ImportError: libcublas.so.10.0: cannot open shared object file: No such file or directory

win11 python 更新_win11 python 更新

        很常见的老问题了,CUDA没有装好或者是环境变量没有配置好。我这里是没有把CUDA添加到环境变量,因为是学校实验室里的服务器,没有sudo权限,不能修改系统的环境变量,所以只能每次启动终端的时候用export命令去添加自己所需要的环境变量。为了方便,把需要export的环境变量都记录在一个文件里,每次只需要source这个文件即可。

win11 python 更新_anaconda_02

奇怪的问题出现了,我在conda环境中用python命令输出的是python3.8.5,而conda list中显示该环境的python版本是2.7,如下图所示。明明就是python2.7的环境,为什么使用python命令会提示当前版本是python3.8.5呢?我试着import tensorflow它也提示no module named tensorflow,意思是虽然显示我在DualRL-master这个环境中,但其实我在另一个环境中?

win11 python 更新_环境变量_03

执行conda activate时,会把目标环境添加到当前系统的环境变量中,这样在命令行执行python命令的时候,执行的就是目标环境中的python版本。而执行export命令时,也会添加所指定的环境变量到系统的环境变量中,而变量名出现重复时会覆盖已有的环境变量。我在使用source执行包含许多个export命令的文件时,其中有一条export命令将conda的默认python版本添加到了系统的环境变量中,覆盖了我之前用conda激活的python版本,所以我的conda虽然显示我使用的python版本是2.7,但其实系统的环境变量已经被之后所使用的export命令覆盖,换成了conda默认的3.8.5版本的python。

环境变量中同一个变量名后添加的会覆盖已有的。

        虽然不是什么大问题,但是有时候就是这种细枝末节能让你迟迟无法找到错误。