编程

virtualenv & venv & pipenv 之间的联系与区别

chenmo · 9月27日 · 2021年 · 本文共27849个字 · 预计阅读93分钟534次已读
virtualenv & venv & pipenv 之间的联系与区别

1. 前言

学习python后端使用flask框架时,由于需要新建虚拟环境,在学习虚拟环境的时候遇到了virtualenvvenvpipenv等名词。这些都与Python的虚拟环境有关,但之间的联系与区别就需要注意区分一下,因此在此记录。

2. virtualenv

virtutalenv 官网:https://virtualenv.pypa.io/en/latest/reference/

virtualenv 是目前最流行的 Python 虚拟环境配置工具。它不仅同时支持 Python2 和 Python3,而且可以 为每个虚拟环境指定 Python 解释器,并选择不继承基础版本的包。

2.1 优点

  • 使得不同Python应用的开发环境相互独立。
  • 开发环境升级不影响其他应用的开发环境,也不会影响全局的环境(默认开发环境是全局开发环境),因为虚拟环境是将全局环境进行私有的复制,当我在虚拟环境进行 pip install 时,只会安装到选择的虚拟环境中。
  • 它可以防止系统中出现包管理混乱和版本的冲突。

2.2 使用方法

(1)使用pip安装virtualenv

(2)创建虚拟环境项目目录

(3)创建一个独立的Python虚拟运行环境:myenv

注:

  • 1)参数:--no-site-packages (可省略) 其意义在于不复制已经安装到系统Python环境中的所有第三方包从而得到一个“纯净”的运行环境。
  • 2) 此时当前目录下会生成一个名为:“myenv” 的目录,该目录中存放刚生成的虚拟环境文件

(4)激活虚拟运行环境

注: 以上命令执行完后会发现命令提示符变了,有个(myenv)前缀,表示当前环境是一个名为“myenv”的Python环境,此时可以在该环境中按照我们熟悉的方式安装库、运行程序等。

(5)安装python包,运行python命令

(6)退出虚拟环境

 

3. Venv

venv 官网:https://docs.python.org/zh-cn/3/tutorial/venv.html

Python 从3.3 版本开始,自带了一个虚拟环境 venv,在 PEP-405 中可以看到它的详细介绍。它的很多操作都和 virtualenv 类似,但是两者运行机制不同。因为是从 3.3 版本开始自带的,这个工具也仅仅支持 python 3.3 和以后版本。所以,要在 python2 上使用虚拟环境,依然要利用 virtualenv 。

有关venv与virtualenv的区别,virtualenv官网: https://virtualenv.pypa.io/en/latest/reference/#compatibility-with-the-stdlib-venv-module 有详细介绍

3.1 使用方法

(1) 安装Venv

(2)

在当前目录创建一个独立的Python运行环境: myenv

激活虚拟运行环境、安装第三方包、运行程序及退出虚拟环境等操作均与 virtualenv 相同,在此不再赘述。

 

4.Pipenv

pipenv 是 Pipfile 主要倡导者、requests 作者 Kenneth Reitz 写的一个命令行工具,主要包含了Pipfile、pip、click、requests和virtualenv,能够有效管理Python多个环境,各种第三方包及模块。

pipenv 的主要特性:

  • pipenv集成了pip,virtualenv两者的功能,且完善了两者的一些缺陷。
  • 过去用virtualenv管理requirements.txt文件可能会有问题,Pipenv使用Pipfile和Pipfile.lock,后者存放将包的依赖关系,查看依赖关系是十分方便。
  • 各个地方使用了哈希校验,无论安装还是卸载包都十分安全,且会自动公开安全漏洞。
  • 通过加载.env文件简化开发工作流程。
  • 支持Python2 和 Python3,在各个平台的命令都是一样的。

4.1 使用方法

(1)安装Pipenv

注:如果在使用当前用户模式下安装pipenv后在shell中提示不可用,则需要把python所在目录添加到系统环境路径Path中,重启电脑,环境变量生效后重试即可。

安装完成之后直接在命令行中输入pipenv,然后回车即可看到所有用法。

(2)创建虚拟环境并安装依赖

国内镜像源:

清华:https://pypi.tuna.tsinghua.edu.cn/simple

阿里云:http://mirrors.aliyun.com/pypi/simple/

中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/

华中理工大学:http://pypi.hustunique.com/

山东理工大学:http://pypi.sdutlinux.org/

豆瓣:http://pypi.douban.com/simple/

(3)进入虚拟环境

(4)运行项目

(5)退出虚拟环境

 

0 条回应