Python之虚拟环境virtualenv、pipreqs生成项目依赖第三方包

virtualenv简介

含义:

   virtual:虚拟,env:environment环境的简写,因此virtualenv就是虚拟环境,顾名思义,就是虚拟出来的一个新环境,好比咱们使用的虚拟机、docker,它们都是把一部分的内容独立出来,这部分独立的内容至关于一个容器,在这个容器只呢个,咱们能够“随心所欲”----安装须要的依赖包,软件..,同时这个容器是与外界相互独立的,容器与容器直接也是互相独立不影响。python

为什么要用虚拟环境:

【前提概要】
Django也是一个很是流行的web框架。因为Django的迭代更新很是快,也比较频繁,因此有一些过期的东西须要丢弃掉,一些新的东西须要加进来,从而致使不一样的版本之间不兼容。好比Django1.三、Django1.四、Django1.8之间就有很大的差别性。
或者是说,以Python的版本举例,如今工做中使用的Python版本与Python2.x和Python3.x两种。
【故事背景】
  假设要进行Python web开发,使用的是Django。手上还有两个老项目A和B须要维护,而新项目C也正在开发中。这里项目A使用的是django1.3,项目B使用的是django1.4,而新项目C使用的是Django1.8。那么问题来了,如何同时在本地进行ABC这三个项目的开发和维护?
正常的模式多是这样:如今在A项目上有一个BUG须要修复,因而,先执行下面的命令,删除掉原来的版本:linux

pip3 uninstall django
而后再执行下面的命令安装django1.3
pip3 install django==1.3

数分钟后,bug修复完毕,好,如今进行新项目C的开发了,而后又要重复上面的故事。
  好了,这仍是最理想的状况。最不理想的状况就是基于django的第三方依赖也是跟Django版本相关的,因而除了install和uninstall Django以外,还要uninstall和install其依赖,Orz,这特么的就尴尬了...web

VirtualEnv能作什么呢?docker

  virtualenv能够搭建虚拟且独立的Python运行环境,使得单个项目的运行环境与其它项目独立起来。同时也能够用于在一台机器上建立多个独立的Python运行环境,VirtualEnvWrapper为前者提供了一些便利的命令行上的封装。django

  virtualenv是一个很是不错的Python虚拟环境的建立工具,它最大的好处在于:可让每一个Python项目单独使用一个环境,而不会影响系统环境,也不会影响其它项目的环境。windows

  virtualenv能够用于建立独立的Python环境,在这些环境里面能够选择不一样的Python版本或者不一样的Packages,而且能够在没有root权限的状况下在环境里面从新安装新套件,互相不会产生任何影响,咱们能够简单的认为虚拟环境就是一个沙箱系统,咱们能够在里面“随心所欲 ”状况下还不会影响外面。app

virtualenv安装和使用

virtualenv本质上是个python包, 使用pip安装:框架

pip3 install virtualenv

在工做目录下建立虚拟环境(默认在当前目录):注意须要自定义虚拟环境的名字!工具

建立虚拟环境:
cmd命令建立(建立目录为cmd命令当前目录,因此最好切换到所须要的目录下在进行建立)
(1) virtualenv env_t1    (建立纯净环境)
(2) virtualenv --system-site-packages env_t2    (建立环境,继承原安装的模块)

建立虚拟环境有2中模式,一个是纯净模式,一个是基于系统环境的建立(自带了系统装的全部模块)ui

-# 基于系统环境的建立模式,里面的模块实际上是对系统的模块的一个引用,在虚拟环境中是卸载不掉的,由于它只是一种引用关系,除非系统卸载的模块,它才会没了。

-# 纯净模式,里面的不包含系统的模块,须要本身下载安装,从头开始,因此这是在虚拟环境下安装的,你能够在后期卸载。

通常来讲,推荐使用纯净模式建立虚拟环境,这样根据本身的需求去安装第三方模块,同时若是想卸载的话也能够在虚拟环境中选择性的卸载。这样自由度更大,而不像另一种模式,系统里有啥它都引用过来,并且还在虚拟环境中删除不了,影响加载速度等。

使用pip3 list 来查看当前环境下安装的模块列表

激活该虚拟环境:
-windows进到目录里,的Script文件夹输入:activate
-linux:soruse env1/Script/activate
退出虚拟环境:
-deactivate
在pycharm中使用虚拟环境:
-files--settings--Project--Project Interpreter--add选择虚拟环境路径下的python.exe便可

 3、pipreqs模块的介绍和使用

当运行别人项目的时候,首先须要安装项目的依赖,否则就没法运行,Python的pipreqs模块就给咱们提供了自动生成项目依赖内容的功能

安装:

pip3 install pipreqs

使用:

# 而后在项目所在的目录下使用命令生成包含依赖内容的文件
pipreqs ./

若是出现编码格式错误:

UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 776: illegal multibyte sequence

解决方法在命令后面指定编码格式:

pipreqs ./ --encoding=utf8

若是已经生成过一次依赖包文件requirements.txt,可是又项目新增了一下模块,此时再在后面添加--force覆盖参数重写便可

pipreqs ./ --encoding='utf8' --force

拿到依赖包文件咱们能够快速自动下载依赖一键安装:

pip3 install -r requirements.txt 

tips:导出全部已安装的第三方模块:

pip3 freeze > package.txt
相关文章
相关标签/搜索