1. 虚拟环境简介
考虑以下场景:
- 当我们需要同时维护一个由
Django 1.0版本驱动的老项目和开发一个使用Django 2.0版本的新项目时,如何顺滑的在两种开发环境中切换成了一个难题。 - 为了解决这个问题,虚拟环境应运而生。
什么是虚拟环境:
- 第一次安装好
Python后,我们就有了一个全局级别的环境(简称全局环境),或者叫做系统级别的环境(简称系统环境)。 - 我们可以使用虚拟环境工具在全局环境的基础上创建多个互相独立、互不影响的虚拟环境,这些虚拟环境可以安装不同版本的
Django。 - 本质上来说虚拟环境就是相互独立的文件夹,内含
Python解释器和相关依赖。 - 如下图所示:
使用虚拟环境的好处:
- 保持全局环境的干净
- 指定不同的依赖版本
- 方便记录和管理依赖
2. virtualenv 介绍
从 Python 3.3 开始 virtualenv 的子集作为 venv 标准库被集成到了 Python 中,这里还是介绍 virtualenv 的使用方法,对 venv 标准库感兴趣的朋友可以移步 venv 标准库文档 做进一步了解。
安装 virtualenv:
pip install virtualenvpip3 install virtualenv
创建虚拟环境:
virtualenv [虚拟环境的名字]在当前文件夹下创建虚拟环境。- 注意:如果
Python3/Scripts查找路径位于Python2/Scripts查找路径前面,会使用python3作为这个虚拟环境的解释器。
进入虚拟环境:
- 首先进入虚拟环境目录:
cd [虚拟环境的名字] windows:Scripts\activate*nix:source bin/activate
退出虚拟环境:
deactivate
创建虚拟环境时指定解释器:
virtualenv -p [Python解释器路径] [虚拟环境的名字]- 比如
virtualenv -p C:\Python36\python.exe test
3. virtualenvwrapper 介绍
virtualenv 的不足:
- 创建的虚拟环境散布于各个角落,无法统一管理
- 必须要进入虚拟环境路径才能激活虚拟环境,有些麻烦
virtualenvwrapper 的安装:
*nix:pip install virtualenvwrapperwindows:pip install virtualenvwrapper-win- 注意:直接安装
virtualenvwrapper可以自动安装virtualenv
virtualenvwrapper 基本使用:
- 创建虚拟环境:
mkvirtualenv 虚拟环境创建之后会自动进入 - 激活虚拟环境:
workon 虚拟环境 - 退出虚拟环境:
deactivate - 删除虚拟环境:
rmvirtualenv 虚拟环境 - 列出所有虚拟环境:
lsvirtualenv - 进入虚拟环境所在目录:
cdvirtualenv 虚拟环境
修改 mkvirtualenv 的默认路径:
- 默认创建的虚拟环境位于:
计算机 -- C盘 -- 用户 -- 用户名 -- Envs - 在
我的电脑->右键->属性->高级系统设置->环境变量->系统变量中添加WORKON_HOME,设置为新路径。
创建虚拟环境的时候指定 Python 版本:
mkvirtualenv --python==C:Python36\python.exe 虚拟环境名称
4. 虚拟环境迁移
考虑以下场景:
- 在开发环境完成了一个爬虫项目,现在想把项目部署到生产环境,让其不间断爬取。
- 如果还要在生产环境依次手动安装该爬虫项目需要的库(
requests、lxml等等),那实在是太麻烦了。 - 我们可以使用
pip包管理工具进行虚拟环境的迁移。
虚拟环境迁移
- 在开发环境中激活虚拟环境
- 使用包管理工具冻结依赖到
requirements文件:pip freeze > requirements.txt - 把
requirements.txt文件移动到生产环境 - 在生产环境中激活新安装的虚拟环境
- 安装依赖:
pip install -r requirements.txt
5. pipenv 介绍
pipenv 是 requests 库的作者 Kenneth Reitz 大神的又一力作。从名字上来看 pipenv 很有野心,它将传统的 pip 包管理工具和 virtualenv 虚拟环境工具的功能合二为一。
pipenv 使用了最新的 依赖记录标准 Pipfile 取代以往手动通过 requirements.txt. 文件记录依赖的方式:
- 使用
Pipfile文件记录项目依赖 - 使用
Pipfile.lock文件记录固定版本的依赖列表
安装 pipenv
pip install pipenv:使用默认版本的Python作为解释器安装虚拟环境
创建虚拟环境
- 进入项目文件夹
pipenv install:使用默认版本的Python作为解释器安装虚拟环境pipenv --three:使用Python 3作为解释器安装虚拟环境pipenv --two:使用Python 2作为解释器安装虚拟环境- 虚拟环境默认将安装在
C:\Users\你的用户名\.virtualenvs\文件夹名称-数字和字母组成的代码 - 可以用
pipenv --venv查看虚拟环境路径 - 可以用
pipenv --py查看Python解释器路径 - 安装好后会多出来
Pipfile和Pipfile.lock文件
激活虚拟环境
pipenv shell
在虚拟环境中安装依赖
pipenv install [包名]- 比如:
pipenv install flask - 注意:
- 这里用的是
pipenv而不是pip - 默认从官方安装源安装,速度较慢
- 修改
Pipfile可以修改默认安装源,提高速度
- 这里用的是
不激活虚拟环境,在虚拟环境下使用命令
pipenv run 命令
退出虚拟环境
exit
修改 Pipfile 来修改 pipenv 安装源
原版 Pipfile
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
[dev-packages]
[requires]
python_version = "3.6"
修改 url,想改 name 也可以,其实这个无所谓的。
修改后的使用清华源的 Pipfile
[[source]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
verify_ssl = true
name = "pypi"
[packages]
[dev-packages]
[requires]
python_version = "3.6"
完成于 2019.04.23