anaconda创建新虚拟环境后,pip总是定位到全局Python的pip路径中(无法定位到虚拟环境的pip)

问题描述 :

创建了新的conda虚拟环境,然后开始用pip安装相关库,紧接着报错,提示pip版本过低——经调试发现,并非该虚拟环境的pip版本低,其实是因为pip定位到的是全局默认Python的pip了,而全局默认的Python版本是Python2.7。。。

进一步挖掘问题:

我第一反应就是环境变量是否没配置——所以使用以下命令查看:

echo $PATH

得到结果:

从上图发现,环境变量已经配置(我虚拟环境就叫“albert”),但问题在于顺序搞错了——我的家目录(/home/shenfei1)下的全局/bin目录和/.local/bin目录竟然排在了环境变量最前面,这也怪不得pip总是索引到这里的老版本pip了!

问题解决:

发现问题所在了,下一步就是把PATH的顺序改回来。这里又是一个大坑。我本人之前安装过cuda10.1,因而在~/.bashrc里重新配置过PATH,具体语句如下:

export PATH=/home/shenfei1/cuda/cuda-10.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/home/shenfei1/cuda/cuda-10.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/DATA2/shenfei/tensorRT/TensorRT-6.0.1.5/lib

这里只需要关注第一行就OK。我在第一行明确地写到,将cuda10.1的路径添加到现有环境变量路径的$PATH前面。而.bashrc文件又是会在每次登陆shell被执行,那么到底为啥实际上反而是跑到/bin目录和/.local/bin目录两个后面去了?(注意观察上一张图/home/shenfei1/cuda/cuda-10.1/bin路径的位置,它是在第4顺位(注意,可以直接当第3顺位的路径不存在,那个是我在调试中临时加的),按实际情况来说他应该是在第一顺位的,这是咋么回事?!)

经过几篇博客的阅读,我意识到.bashrc并非是登录shell时唯一会被加载的脚本(这个其实早就知道,只不过是这次才知道加载的先后次序,具体加载次序详见博客:https://blog.51cto.com/zpf666/2334770)。我家目录的.bashrc,实际上是被家目录下的.bash_profile(若没有这个文件,则去找.profile)启动运行的。所以我追溯到了~/.profile文件,发现它是这样的: 

# ~/.profile: executed by the command interpreter for login shells.

# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login

# exists.

# see /usr/share/doc/bash/examples/startup-files for examples.

# the files are located in the bash-doc package.



# the default umask is set in /etc/profile; for setting the umask

# for ssh logins, install and configure the libpam-umask package.

#umask 022



# if running bash

if [ -n "$BASH_VERSION" ]; then

    # include .bashrc if it exists

    if [ -f "$HOME/.bashrc" ]; then

        . "$HOME/.bashrc"

    fi

fi


# set PATH so it includes user's private bin directories

PATH="$HOME/bin:$HOME/.local/bin:$PATH"

 注意!!!注意最后一行内容!PATH="$HOME/bin:$HOME/.local/bin:$PATH",这显然是把两个全局地址放到了全部环境变量之前嘛!而且这句话是在.profile文件最后一行,这也意味着它的修改是在.bashrc的加载之后的,这当然导致所有在.bashrc中的修改都不会是最终版本咯。

所以把这句改成PATH="$PATH:$HOME/bin:$HOME/.local/bin",一切就都迎刃而解了。但至于为什么会变成这样,我确实不太清楚——为什么新建一个虚拟环境会变成这样?这还得需要大佬来解释了。

 

后记

想想过去一年时间,我遇到了一系列问题,有的是软件安装,有的是代码debug,有的是爬虫工具的学习,有的是深度学习模型的调试。虽然自己现在水平还是不足,但毫无疑问已经比之前进步了很多,不少科班出身的同事搞几天也学不会的工具,我往往可以用更短的时间解决。想当初,碰到今天这类问题,只会觉得自己太菜,根本没信心可以用自己的能力去解决,总觉得自己和科班出身的人差距太大,只觉“此恨绵绵无绝期”。但通过一个又一个问题的解决,我发现一个浅显又难以真正践行的道理,那就是“世上无难事,只怕有心人”。差距是要一点点缩小的,而这取决于你的努力程度和学习能力,而这二者,才是在“长跑”中更重要的决胜因素,“初始水平”反而不那么重要。最后,各位,共勉!

  • 49
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_illusion_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值