1. 前言
学习python后端使用flask框架时,由于需要新建虚拟环境,在学习虚拟环境的时候遇到了virtualenv
、venv
、pipenv
等名词。这些都与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
xxxxxxxxxx
11pip install virtualenv
(2)创建虚拟环境项目目录
xxxxxxxxxx
21mkdir myproject
2cd myproject
(3)创建一个独立的Python虚拟运行环境:myenv
xxxxxxxxxx
11virtualenv --no-site-packages myenv
注:
- 1)参数:
--no-site-packages
(可省略) 其意义在于不复制已经安装到系统Python环境中的所有第三方包从而得到一个“纯净”的运行环境。 - 2) 此时当前目录下会生成一个名为:“myenv” 的目录,该目录中存放刚生成的虚拟环境文件
(4)激活虚拟运行环境
xxxxxxxxxx
41# Windows:
2myenv\Scripts\activate.bat
3# Linux:
4source myenv/bin/activate
注: 以上命令执行完后会发现命令提示符变了,有个(myenv)前缀,表示当前环境是一个名为“myenv”的Python环境,此时可以在该环境中按照我们熟悉的方式安装库、运行程序等。
(5)安装python包,运行python命令
xxxxxxxxxx
81# 安装单个包
2pip install jieba
3
4# 批量安装包
5pip install requirements.txt
6
7# 运行python项目
8python app.py
(6)退出虚拟环境
xxxxxxxxxx
21# 退出虚拟环境
2deactivate
3. Venv
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
xxxxxxxxxx
51# Windows 中venv已经以标准库的形式存在,不用再单独安装
2
3# Linux
4sudo apt-get install python3-venv
5# 如有不同版本的Python3,可指定具体版本venv:python3.5-venv
(2)
在当前目录创建一个独立的Python运行环境: myenv
xxxxxxxxxx
51# Windows
2py -3 -m venv myenv
3
4# Linux
5python3 -m venv 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
xxxxxxxxxx
51# pip 安装
2pip install pipenv # 全局安装,如果只想在当前用户模式下安装,可添加参数:--user
3
4# 如需更新可使用
5pip install --user --upgrade pipenv
注:如果在使用当前用户模式下安装pipenv后在shell中提示不可用,则需要把python所在目录添加到系统环境路径Path中,重启电脑,环境变量生效后重试即可。
安装完成之后直接在命令行中输入
pipenv
,然后回车即可看到所有用法。
(2)创建虚拟环境并安装依赖
xxxxxxxxxx
51# 创建环境并自动安装依赖
2pipenv install
3
4# 创建环境并指定镜像自动安装依赖: pipenv --pypi-mirror url install
5pipenv --pypi-mirror http://mirrors.aliyun.com/pypi/simple/ install
国内镜像源:
清华: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/
(3)进入虚拟环境
xxxxxxxxxx
21# 进入虚拟环境
2pipenv shell
(4)运行项目
xxxxxxxxxx
21# 运行项目
2flask run
(5)退出虚拟环境
xxxxxxxxxx
21# 退出虚拟环境
2exit