命令行中输出的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

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

        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这个环境中,但其实我在另一个环境中?

        我反复尝试删除环境,新建环境,重新安装各种包,经过多次测试,我终于找到了问题所在。执行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的版本,所以可以得出结论,环境变量中同一个变量名后添加的会覆盖已有的。

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

  • 13
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值