说一个Python开发者100%都会遇到的python虚拟环境的问题!!!

做python开发的朋友应该都遇到过安装环境的问题,特别是对于深度学习的项目会涉及多个Python版本的环境已经环境要依赖一些C语言的依赖包,如果不用anconda来管理安装,而是用离线下载、编译的方式安装,不仅安装起来很麻烦,而且也很容易出问题。最好的方式就是使用anconda来管理和安装,只需要手动输入简单的命令,就能将非Python的包安装成功。

问题背景:

这个问题来源于一个读者,他在做一个图像识别的项目,算法分为两个模块,都是要依赖Pytorch框架。一个算法模块是基于python3.6的Pytorch框架框架实现的,一个是基于python3.7版本的Pytorch框架实现的,所以现在需要搞两个不互相依赖的环境来运行不同的算法。这里他打算使用anconda来管理这两个环境。

为了更清晰的还原问题,以安装pymysql这个包为例

问题由来:

在安装好 anconda后(已经确认anconda安装没有问题),就使用conda 创建一个指定的虚拟环境,然后在这个环境里使用 pip安装他需要的包,运行代码时,就显示此包不存在!!!

1.这里我先创建一个虚拟环境,然后在虚拟环境中安装pymysql这个包,然后终端会显示安装成功

2.然后直接在ipython的交互模式中导入pymysql这个包,这时候就显示上边这个问题:ModuleNotFoundError: No module named 'pymysql'

很多人可能很奇怪,明明在实在这个虚拟环境里面安装的包,为啥导入的时候,就显示这个包没有发现了???下面就来分析一下这个问题。

问题分析

其实这个问题出现的原因很简单。接着上面的例子,继续往下看:

1.正常情况下,只要在虚拟环境中使用pip安装成功一个包,那么使用pip list就能够看到安装的所有包,的确如下图所示,说明了pymysql就在这个虚拟环境中,那为啥了?

2. 接下使用pip --version命令的时候,就会有一个惊喜的发现:这个pip的路径居然是大环境的pip,而非anconda中的pip,那为什么会出现这种情况了?

我的理解是这样的:在使用 conda命令创建指定虚拟环境之后,conda不会自动给你这个虚拟环境内安装一个pip,这时候要是还在这个虚拟环境里使用pip安装包,这时候因为虚拟环境没有pip,所以它就会在大环境下去找,于是就找到了大环境下面的pip.而不同环境下的pip它会有自己特定的包的安装路径,所以就会出现刚才那个问题。虽然使用 pip install pymysql 显示已经安装成功,而且pip list的时候也显示有这个包(其实这里pip list的包全部都是大环境里面的包),但是导入就会出错。

解决办法:

上边已经将问题详细的还原和分析了,接下来就是在指定的虚拟环境中安装pip。办法很简单,直接在虚拟环境中输入下面的命令:

conda install pip

pip安装成功之后,再使用pip --version查看的话,就会发现这时候的pip路径已经是我们虚拟环境下的pip了。

为了验证问题是否已经解决,同样再安装一次pymysql,pip list的时候,下图也证实了pymysql确实安装在这个虚拟环境,

在ipython里面导入pymsql,刚才的错也没有再出现,表明安装成功!!!

反思与总结:

在平时的工作中,经常会遇到各种各样的环境问题,今天这个只是一个很简单的问题,以后可能遇到的问题更加复杂,但是不管是什么问题,只要按照上边的这种思路,一步步还原问题、分析问题、然后在针对性解决,才能不断地提升自己!!!

Python全家桶

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值