写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的包管理的更多相关文章

  1. 一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接

    [一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知道最近电影更新的状态. 今天小编以电影天堂为例,带大家更直观的去看自己喜欢的电影,并且下载下来 ...

  2. Python的包管理工具Pip (zz )

    Python的包管理工具Pip 接触了Ruby,发现它有个包管理工具RubyGem很好用,并且有很完备的文档系统http://rdoc.info 发现Python下也有同样的工具,包括easy_ins ...

  3. Python的包管理

    0.Python的包管理 在刚开始学习Python的时候比较头疼各种包的管理,后来搜到一些Python的包管理工具,比如setuptools, easy_install, pip, distribut ...

  4. Python的包管理工具

    Python的包管理工具 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为什么使用包管理 Python的模块或者源文件直接可以复制到目标项目目录中,就可以导入使用了. 但是为了 ...

  5. Python PIP包管理器

    版权所有,未经许可,禁止转载 章节 Python 介绍 Python 开发环境搭建 Python 语法 Python 变量 Python 数值类型 Python 类型转换 Python 字符串(Str ...

  6. Python之包管理工具:distutils、setuptools、distribute、setup.py、easy_install、easy_install、pip

    在安装Python包的过程中,经常涉及到distutils.setuptools.distribute.setup.py.easy_install.easy_install和pip等等. 介绍:htt ...

  7. 【转载】Python的包管理工具Pip

    接触了Ruby,发现它有个包管理工具RubyGem很好用,并且有很完备的文档系统http://rdoc.info 发现Python下也有同样的工具,包括easy_install和Pip.不过,我没有细 ...

  8. Python的包管理工具Pip

    接触了Ruby,发现它有个包管理工具RubyGem非常好用,而且有非常完备的文档系统http://rdoc.info 发现Python下也有相同的工具,包含easy_install和Pip.只是,我没 ...

  9. 5、Python之包管理工具pip

    pip提供我们各色各样的软件(第三方库),而这些第三方库又可以给我们实现各种各样不同的功能,科学计算.画图.操作文件.聊天-- 我们可以通过Cmd终端.Pycharm.Jupyter三种平台使用pip ...

随机推荐

  1. (class file version 53.0), Java Runtime versions up to 52.0错误的解决方法

    遇到这个错误是在Apache Tomcat上部署应用程序的时候遇到的,具体的错误描述是: java.lang.UnsupportedClassVersionError: HelloWorld has ...

  2. jQuery DOM 元素方法 (十)

    函数 描述 .get() 获得由选择器指定的 DOM 元素. .index() 返回指定元素相对于其他指定元素的 index 位置. .size() 返回被 jQuery 选择器匹配的元素的数量. . ...

  3. Android Ptrace Inject

    之前介绍了Android平台上3种常见的hook方法,而hook的前提是进程注入,通过进程注入我们可以将模块或代码注入到目标进程中以便对其空间内的数据进行操作,本篇文章介绍基于ptrace函数的注入技 ...

  4. C#互操作处理(一)

    C#互操作的类型基本位于System.Runtime.InteropServices命名空间下,本系列随笔主要记录本人在开发过程中使用的到一些类型函数.技巧及工具 计算类型的大小 int size = ...

  5. 【最大权闭合子图】bzoj4873 [Shoi2017]寿司餐厅

    4873: [Shoi2017]寿司餐厅 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 369  Solved: 256[Submit][Status ...

  6. Jerry 2017年的五一小长假:8种经典排序算法的ABAP实现

    2017年4月29日~5月1日,国际劳动节, 三天的小长假. 在国内,小长假往往是这样的: 然而我当时在戏称为"德村"(德国农村)的Walldorf出差并且住在Wiesloch, ...

  7. Kylin与CDH兼容性剖析

    1. 概述 Apache Kylin™是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区.它能 ...

  8. CentOS7 添加端口

    首先要知道CentOS 7 采用了 firewalld 防火墙,而在linux中其他版本大多是通过编辑iptables的配置文件来修改. 1.添加9000端口 # firewall-cmd --add ...

  9. 视觉slam十四讲习题ch3-6

    题目回顾: 一般解线性方程Ax=b有哪几种做法?你能在Eigen中实现吗? 解: 线性方程组Ax = b的解法 : 1.直接法:(1,2,3,4,5) 2.迭代法:如Jacobi迭代法(6) 其中只有 ...

  10. Error 0xC00000FD: Stack overflow 之 更改堆栈保留大小

    Stack  overflow  顾名思义就是堆栈内存溢出. 一.无限递归 这个要自己仔细检查一下,程序中是否含有无限递归的情况,比如下面这就是无限递归: int function(int x, in ...