命令行中输出的Python版本与当前Conda环境中的Python版本不一致

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

为了完成导师布置的情感对话的项目,我从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

命令行中输出的Python版本与当前Conda环境中的Python版本不一致

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

命令行中输出的Python版本与当前Conda环境中的Python版本不一致

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

命令行中输出的Python版本与当前Conda环境中的Python版本不一致

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

我又测试了一下先使用export将某个python版本添加到环境变量后,再使用conda activate去激活另一个版本的python,在命令行使用python会发现输出的是后一个python的版本,所以可以得出结论,环境变量中同一个变量名后添加的会覆盖已有的。

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

Original: https://blog.csdn.net/kele52he/article/details/118341074
Author: Eiffel灬
Title: 命令行中输出的Python版本与当前Conda环境中的Python版本不一致

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/771888/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球