开发者社区> icoders> 正文

一篇文章帮你解决python的包管理

简介: 写python代码的人都知道,一个项目写下下来,不可避免的都需要使用很多第三方包,通常我们都是通过pip install ,然而当我们需要上线的时候问题来了,如果中间你自己不记得自己安装了多少个包,这个时候你就面临着需要导出包名字,这个时候你可能想到了 pip freeze > requirements.txt,但是实际开发中你可能会开发很多个项目,每个项目可能都是pip安装了一堆包,如果每次都是这样,导出的包会越来越多。
+关注继续查看
写python代码的人都知道,一个项目写下下来,不可避免的都需要使用很多第三方包,通常我们都是通过pip install ,然而当我们需要上线的时候问题来了,如果中间你自己不记得自己安装了多少个包,这个时候你就面临着需要导出包名字,这个时候你可能想到了 pip freeze > requirements.txt,但是实际开发中你可能会开发很多个项目,每个项目可能都是pip安装了一堆包,如果每次都是这样,导出的包会越来越多。并且多个项目之间并不能很好的隔离,并且可能你每个项目中用的python环境不同,包的版本不同,而这在后期可能造成很多不可预知的麻烦。这个时候我们就需要用到python的虚拟环境啦
 

虚拟环境virtualenv

不同的项目使用不同版本的某些包,可能某些原因使用旧版本的包还不能升级,所以这个时候我们可以通过虚拟环境来解决这个问题。我们需要安装一个特殊的包:virtualenv
 
安装:pip install virtualenv,如下图所示表示安装成功

创建虚拟环境

命令:virtualenv venv

执行这个命令会默认在当前目录创建一个虚拟环境venv 目录,这里包含了Python可执行文件,常用的标准库,激活virtualenv环境脚本的目录,激活virtualenv环境的脚本在下图目录中的Scripts目录中的activate,执行这个程序就可以激活

当我们激活虚拟环境后,会出现如下图所示,标注的部分就表示你已经进入了虚拟环境。如果想要退出虚拟环境需要执行deactivate

在虚拟环境中你的环境和你本机的python环境是隔离的如果你在虚拟环境中通过pip安装包只会安装在你这个虚拟环境目录下,并不会安装到你的电脑

python环境下

 

但是如果仅仅是这个模块好像是没那么方便,这里我们需要再安装一个模块virtualenvwrapper,其实这个是对virtualenv模块的扩展,让你更加方便的管理和创建虚拟环境

virtualenvwrapper模块

virtualenvwrapper是对virtualenv的功能扩展,它可以帮我们:

管理全部的虚拟环境

更加方便的创建,删除和拷贝虚拟环境

安装:pip install virtualenvwrapper

为了方便管理需要在环境变量里添加一个环境变量,这里我创建一个目录,用于存放所有的虚拟环境,我这里用的是E:\venv_project目录

 安装完成virtualenvwrapper 之后,我们就有了几个命令可以用:

mkvirtualenv :创建虚拟环境

lsvirtualenv:列出全部的虚拟环境

showvirtualenv:列出单个虚拟机环境的信息

rmvirtualenv:删除一个虚拟环境

cpvirtualenv:拷贝一个虚拟环境

allvirtualenv:对当前虚拟环境执行统一的命令

cdvirtualenv:可以直接切换到虚拟环境的子目录里

cdsitepackages:和cdvirtualenv同理,切换到虚拟环境的site-packages目录下

lssitepackages:列出site-packages目录下的目录

上述命令的简单实用例子:

因为上面已经提前添加了WORKON_HOME环境变量,所以我们通过mkvirtualenv命令创建的虚拟环境都会创建到这个目录下,

这里还有一个命令:workon命令可以列出所有的虚拟环境

我们通过mkvirtualenv创建虚拟环境,并通过通过workon命令可以查看我们创建的所有虚拟机环境,以及通过workon命令在不同的虚拟环境中迅速切换

 

这样虚拟环境就安装完成了

 

总结

通过上面的虚拟环境,我们每个项目都可以运行在独立的python环境中,也不用担心不同项目之间python包的干扰,还能保证你本地测试环境的代码完全和上线时是一致的

再也不用因为在测试环境好好地,放到线上各种奇怪的问题 ,如下图上线之后很多程序员发现bug的感觉:

 我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。

所有的努力都值得期许,每一份梦想都应该灌溉!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python编程自动化办公案例(3)
Python编程自动化办公案例(3)
13 0
Python编程自动化办公案例(2)
Python编程自动化办公案例(2)
11 0
Python编程 动态爱心
Python编程 动态爱心
24 0
Python编程 利用Python画一个爱心
Python编程 利用Python画一个爱心
14 0
Python编程自动化办公案例(1)
Python编程自动化办公案例(1)
12 0
Python编程 装饰器
Python编程 装饰器
14 0
Python编程 闭包
Python编程 闭包
8 0
python编程 for循环注意点与大写转换案例
python编程 for循环注意点与大写转换案例
10 0
Python编程 while循环
Python编程 while循环
12 0
Python编程 圣诞树教程 (附代码)程序员的浪漫
Python编程 圣诞树教程 (附代码)程序员的浪漫
9 0
python经典编程100例(1)
python经典编程100例(1)
15 0
Python编程 条件判断语句
Python编程 条件判断语句
26 0
Python编程 顺序执行与程序的主入口
Python编程 顺序执行与程序的主入口
16 0
Python编程 集合
Python编程 集合
19 0
Python编程 字典的常用操作
Python编程 字典的常用操作
18 0
+关注
icoders
python服务端开发,主要通信方面开发,freeswitch asterisk 最近学习go
文章
问答
视频
相关电子书
更多
双剑合璧-Python和大数据计算平台的结合
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
相关实验场景
更多