用conda和pip隔离Python环境

用conda和pip隔离Python环境
笔者在同一台服务器上运行多个不同的项目,多个项目依赖同一个包的不同版本,如果这些项目都使用全局环境,会发生依赖包冲突,因此有必要引入虚拟环境对不同的项目依赖进行管理。Python的virtualenv包可以用来建立虚拟环境,但是virtualenv对于虚拟环境的管理并不方便,而且不能同时使用多个Python版本。因此采用conda配合pip进行虚拟环境和包管理。具体来说,conda可以对虚拟环境的目录做了统一的管理,也支持不同的虚拟环境对应不同的Python版本,还可以像pip一样从网络安装Python包,也可以安装pip。但conda的国内镜像更新比较慢,很多包的版本比较老,且包的覆盖面也没有pip广,因此笔者安装Python包还是用pip,只是用conda的虚拟环境来隔离不同项目的环境。
关于conda的安装,推荐直接下载安装Anaconda,安装方式可参考网络上其他博客。以下假设读者已经正确安装conda并设置了环境变量。笔者的环境如下:

Python 3.6.5
Anaconda3-5.2.0-Linux-x86_64
Ubuntu 16.04
创建conda虚拟环境
用下面的命令创建名为test_env的conda虚拟环境

conda create -n test_env
1
使用下面的命令启用虚拟环境

source activate test_env
1
此时命令行的系统用户名左侧会多一个环境名(test_env),表示进入了名为test_env的虚拟环境。使用命令

source deactivate
1
可以退出虚拟环境

全局pip
进入test_env虚拟环境后,执行命令which pip,可以看到当前pip的路径/home/${USER_NAME}/anaconda3/bin/pip(${USER_NAME}是系统用户名)仍然是全局pip的路径,这意味着此时在虚拟环境中使用pip install的方式安装的包,仍会被安装到全局环境下,对全局环境和当前虚拟环境都有效,这是笔者不期望的,因为这样并没有起到环境隔离的作用。
为了验证上面的结论,在虚拟环境中用全局pip安装1.11版本networkx作为测试。

pip install networkx==1.11
1
安装完成后,在虚拟环境中执行pip list|grep networkx,显示networkx 1.11
source deactivate退出虚拟环境在全局环境中执行pip list|grep networkx,也显示networkx 1.11

在虚拟环境中安装pip
为了让pip安装的包只对虚拟环境升效从而实现环境隔离,需要在虚拟环境中用conda先安装虚拟环境内的pip,再用虚拟环境内的pip安装其他Python包。source activate test_env进入test_env虚拟环境后,用下面的命令安装虚拟环境中的pip

conda install pip
1
此时再执行which pip,显示的当前pip路径为/home/${USER_NAME}/anaconda3/envs/${ENV_NAME}/bin/pip(${USER_NAME}是系统用户名,${ENV_NAME}是conda虚拟环境名),此后执行的pip install都是用的虚拟环境内的pip进行安装,比如我们安装一个2.4版本的networkx

pip install networkx==2.4
1
安装完成后,在虚拟环境中执行pip list|grep networkx,显示networkx 2.4
source deactivate退出虚拟环境在全局环境中执行pip list|grep networkx,仍显示networkx 1.11,至此,实现了pip安装的包在conda虚拟环境内的隔离。
————————————————
版权声明:本文为CSDN博主「da_kao_la」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/da_kao_la/article/details/103849426

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嗨皮嗨皮QAQ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值