学习地址:
撩课 - Python 大数据 + 人工智能 1
撩课 - Python 大数据 + 人工智能 2
撩课 - Python 大数据 + 人工智能 3
撩课 - Python 大数据 + 人工智能 4
撩课 - Python 大数据 + 人工智能 5
撩课 - Python 大数据 + 人工智能 6
撩课 - Python-GUI 编程 - PyQt5
1. 虚拟环境
1). 场景
假如入当前有两个项目 A 和 B; 两个项目中都需要依赖 requests 库; 但是需要的版本不一样
而默认情况下, 不管哪个项目, 使用的都是全局的 Python 环境
不能同时安装使用同一个库不同版本
比如: requests 库, 要不就是 1 版本, 要不就是 2 版本; 不可能同时存在
上述场景, 造成的问题就是, A 和 B 两个项目, 只能运行一个; 如果运行另一个, 必须安装与之匹配的库版本
2). 解决方案
使用虚拟环境, 创建一个完全独立的局部 Python 环境
在此环境中, 安装所有与这个项目相匹配的库即可
总之
一个项目, 使用一个局部的独立的 "Python 环境"; 互相之间, 没有干扰
概念
这个 "局部的, 独立的 Python 环境" 就称为: 虚拟环境
完全模拟系统全局 Python 环境的使用
安装
卸载
...
安装
是一个三方包, 名称为:
virtualenv
安装命令
pip install virtualenv
文档说明
https://virtualenv.pypa.io/en/latest/userguide/
使用
第一步: 创建一个局部的隔离的虚拟环境
语法
virtualenv 虚拟环境名称
例: virtualenv ENV
作用效果
可选参数
-p
指明 Python 版本创建
到时候就使用此版本的 Python 解释器来执行代码
默认是你安装 virtualenv 包的时候, 所在的 Python 版本
例: virtualenv -p C:\Python\36\python3.exe ENV
--system-site-packages
继承系统的三方库
到时候, 检索库的时候, 也会到系统的三方库中找
如果不加此项, 到时候只会在当前的虚拟环境中找
例: virtualenv --system-site-packages ENV
第二步: 激活虚拟环境
语法
进入到虚拟环境目录 / scripts 文件夹中
activate.bat
界面效果
作用效果
在环境的激活状态, 后续所有的操作都是基于这个虚拟的 Python 环境
包的安装卸载查看等等
代码的执行
比如:
pip install requests
如果不激活创建的虚拟环境, 到时候会被安装在全局环境
激活后, 则会安装在虚拟环境中
python3 test.py
如果 test.py 中导入了某个包
会到虚拟环境中去查找相关包!
第三步: 在激活状态下, 想干啥干啥
操作三方库
执行 py 文件
...
注意
以上所有操作, 均作用在被激活的虚拟环境中
第四步: 退出虚拟环境
语法
进入到虚拟环境目录 / scripts 文件夹中
deactivate.bat
界面效果
作用效果
退出后, 所有后续操作, 又会再次的作用于全局的 Python 环境中
第五步: 删除虚拟环境
直接删除整个文件夹目录即可
3). 补充
问题
以后, 把项目给别人的时候, 怎样能保证项目在别人电脑上跑得起来?
解决
方案 1:
连同虚拟环境和项目一起拷贝给别人
方案 2:
在虚拟环境中, 冻结依赖需求文本
把项目和依赖需求文本给别人
别人自己在本地创建一个新的虚拟环境, 并根据依赖需求文本安装相关库
Pycharm 使用虚拟环境
实践
2. 虚拟环境进阶补充
1). 集中式虚拟环境管理
库名称
virtualenvwrapper-win
基于 virtualenv, 开发的一个工具包
功能作用
可以将之前分散在各个路径下的虚拟环境, 集中到统一的路径下进行管理
方便各个虚拟环境之间的切换
更加方便的去使用 virtualenv
文档说明
https://pypi.python.org/pypi/virtualenvwrapper-win
2). 使用说明
创建虚拟环境
语法
mkvirtualenv 虚拟环境名称
作用效果
会创建在特定的文件夹中
Windows 下, 默认在用户目录的 Envs 文件夹中
激活新建的虚拟环境
查看所有虚拟环境
语法
- lsvirtualenv
- workon
作用效果
列出当下创建的所有虚拟环境
切换激活虚拟环境
语法
workon 虚拟环境名称
作用效果
激活指定的虚拟环境
关闭虚拟环境
语法
deactivate
作用效果
关闭当下所在的虚拟环境
删除虚拟环境
语法
rmvirtualenv 虚拟环境名称
作用效果
删除指定虚拟环境
删除对应的文件夹
退出对应虚拟环境的激活状态
3). 更加基于项目的虚拟环境管理
库名称
Pipenv
功能作用
pip + virtualenv
更加基于项目; 使得我们更加关注于项目的管理; 工具内部封装了以上两个功能
优势
不需要再分别使用 pip 和 virtualenv, 直接使用 Pipenv 即可
会自动的帮你创建虚拟环境, 以及安装三方库
会自动的记录你项目依赖的所有三方库
使用 Pipfile 和 Pipfile.lock 取代了 requirements.txt
文档说明
https://docs.pipenv.org/
使用说明
第一步: 创建虚拟环境
命令
- pipenv --two
- pipenv --three
查看相关信息
查看项目位置
pipenv --where
查看虚拟环境位置
pipenv --venv
查看解释器信息
pipenv --py
第二步: 激活虚拟环境
命令
pipenv shell
作用效果
第三步: 该干啥干啥
执行代码
python3 xxx.py
会使用虚拟环境
安装包
命令
pipenv install [三方库名]
作用效果
1. 检测当前项目对应的虚拟环境是否存在, 不存在则创建
2. 在虚拟环境中安装指定的三方库
如果没指定, 则不安装
3. 在项目目录下, 通过 Pipfile 和 Pipfile.lock 记录当下已经安装的三方库
不存在则创建
注意: 不要使用 pip install
虽然在虚拟环境中安装对应的包
但是不会更新 Pipfile 和 Pipfile.lock
查看包的依赖结构
pipenv graph
卸载包
pipenv install 包名
第四步: 退出虚拟环境
命令
exit
或者直接关闭 shell 窗口
第五步: 删除虚拟环境
命令
pipenv --rm
补充
以后上传项目 (给别人) 应该包含哪些文件?
包和模块源码
Pipfile 和 Pipfile.lock
别人拿到这些内容后, 如何使用?
1. 执行 pipenv install
会自动根据 Pipfile 创建虚拟环境以及对应的依赖包
2. 执行 pipenv shell
激活虚拟环境
补充
aconada
来源: http://www.jianshu.com/p/b6497a6ea9e4