Python中虚拟环境virtualenv, pipreqs如何生成项目依赖第三方包

  介绍

这篇文章将为大家详细讲解有关Python中虚拟环境virtualenv, pipreqs如何生成项目依赖第三方包,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

<强> virtualenv简介

<强>含义:

虚拟:虚拟,env:环境环境的简写,所以virtualenv就是虚拟环境,顾名思义,就是虚拟出来的一个新环境,比如我们使用的虚拟机,码头工人,它们都是把一部分的内容独立出来,这部分独立的内容相当于一个容器,在这个容器只呢个,我们可以“为所欲为“- - - - -安装需要的依赖包,软件. .,同时这个容器是与外界相互独立的,容器与容器直接也是互相独立不影响。

<强>为何要用虚拟环境:

【前提概要】

Django也是一个非常流行的网框架。由于Django的迭代更新非常快,也比较频繁,所以有一些过时的东西需要丢弃掉,一些新的东西需要加进来,从而导致不同的版本之间不兼容。比如Django1.3, Django1.4, Django1.8之间就有很大的差异性。

或者是说,以Python的版本举例,现在工作中使用的Python版本与Python2.x和Python3。x两种。

【故事背景】

假设要进行Python web开发,使用的是Django。手上还有两个老项目A和B需要维护,而新项目C也正在开发中。这里项目一个使用的是django1.3,项目B使用的是django1.4,而新项目C使用的是Django1.8。那么问题来了,如何同时在本地进行ABC这三个项目的开发和维护?

正常的模式可能是这样:现在在一项目上有一个错误需要修复,于是,先执行下面的命令,删除掉原来的版本:

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

数分钟后,虫修复完毕,好,现在进行新项目C的开发了,然后又要重复上面的故事。

好了,这还是最理想的情况。最不理想的情况就是基于django的第三方依赖也是跟django版本相关的,于是除了安装和卸载django之外,还要卸载和安装其依赖,下跪,这特么的就尴尬了……

VirtualEnv能做什么呢?

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

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

virtualenv可以用于创建独立的Python环境,在这些环境里面可以选择不同的Python版本或者不同的Packages,并且可以在没有root权限的情况下在环境里面重新安装新套件,互相不会产生任何影响,我们可以简单的认为虚拟环境就是一个沙箱系统,我们可以在里面“为所欲为 ”情况下还不会影响外面。

virtualenv安装和使用

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

pip3 install virtualenv

在工作目录下创建虚拟环境(默认在当前目录):注意需要自定义虚拟环境的名字!

创建虚拟环境:

cmd命令创建(创建目录为cmd命令当前目录,所以最好切换到所需要的目录下在进行创建)

(1) virtualenv env_t1 (创建纯净环境)

(2) virtualenv --system-site-packages env_t2 (创建环境,继承原安装的模块)

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

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

-# 纯净模式,里面的不包含系统的模块,需要自己下载安装,从头开始,所以这是在虚拟环境下安装的,你可以在后期卸载。

一般来说,推荐使用纯净模式创建虚拟环境,这样根据自己的需求去安装第三方模块,同时如果想卸载的话也可以在虚拟环境中选择性的卸载。这样自由度更大,而不像另外一种模式,系统里有啥它都引用过来,而且还在虚拟环境中删除不了,影响加载速度等。

Python中虚拟环境virtualenv,pipreqs如何生成项目依赖第三方包

Python中虚拟环境virtualenv,pipreqs如何生成项目依赖第三方包

Python中虚拟环境virtualenv, pipreqs如何生成项目依赖第三方包