Python 中 Virtualenv 和 pip 的简单用法详解


Posted in Python onAugust 18, 2017

本文介绍了Python 中 Virtualenv 和 pip 的简单用法详解,分享给大家,具体如下:

0X00 安装环境

我们在 Python 开发和学习过程中需要用到各种库,然后在各个不同的项目和作品里可能用的版本还不一样,正因为有这种问题的存在才催生了virtualenv的诞生。virtualenv 可以在电脑上创建一个虚拟环境,可以针对每一个项目创建一个虚拟环境,这样就不用担心各个不同的项目用不同版本的库的时候出现的冲突了。 下面的内容只适用于 Linux/OSX,未经 Windows 环境测试

要使用这个功能还是需要安装,安装 virtualenv 肯定就得直接用 pip 安装了,pip install virtualenv就可以轻松装上了。装好之后我们就可以来测试一波了。

0X01 初始化一个空的工作环境

首先在一个空的环境中执行virtualenv --no-site-packages test_env,就是在当前目录创建一个名为 test_env 的虚拟环境。这里--no-site-packages参数是指不从全局的 Python 中携带任何第三方库。就比如说你在全局 Python 中安装了 xxx 库,在不用这个参数来创建虚拟环境时,虚拟环境中也会带着这个库;但是加上了这个参数,虚拟环境中就是一个纯净的 Python,没有这些库。

root in ~ λ virtualenv --no-site-packages test_env
New python executable in /root/test_env/bin/python
Please make sure you remove any previous custom paths from your /root/.pydistutils.cfg file.
Installing setuptools, pip, wheel...done.

然后可以通过source test_env/bin/activate可以进入(激活)到这个虚拟环境里去。进入到虚拟环境中之后,通常情况下你的命令提示符最前面会出现一个括号,括号里面写着你虚拟环境的名字。

这里说是虚拟环境,其实一切都是真实的。只是说你在激活了这个环境,在这个环境下用 pip 安装的库都放在 test_env 中。

也可以通过deactivate来退出这个环境。

0X02 批量导出和安装库

比如我们开发了一个项目,里面用到了 pymongo/requests/flask/pymysql 等等等等十几二十个库,还要指定特定的版本,那么当把一个项目从机器 A 迁移到机器 B 的时候就会很麻烦。需要手动记录每个库和版本,还要逐个去安装,非常麻烦。所以针对这个问题 pip 已经有了非常完善的解决方案。

(test_env) root in ~ λ pip freeze > requirements.txt # 导出已安装的库

这个命令可以导出当前环境中安装好的所有第三方库,并且是以一个标准的格式导出的。所以一般一个标准的 python 项目的根目录都会有这个名为requirements.txt的依赖文件。

既然可以一次性导出,那么必然可以一次性安装喽。通过这种方式就可以将上面导出的特定版本的所有库一次性全装上。配合 virtualenv 可以快速的部署一个 Python 项目,并且不会搞乱其他的 Python 项目环境。

(test_env_1) root in ~ λ pip install -r requirements.txt

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Django Form解决表单数据无法动态刷新的两种方法
Jul 14 Python
PyChar学习教程之自定义文件与代码模板详解
Jul 17 Python
python使用turtle库绘制时钟
Mar 25 Python
对python添加模块路径的三种方法总结
Oct 16 Python
对python打乱数据集中X,y标签对的方法详解
Dec 14 Python
使用TensorFlow实现二分类的方法示例
Feb 05 Python
python版DDOS攻击脚本
Jun 12 Python
python 字典操作提取key,value的方法
Jun 26 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
Mar 23 Python
Python json读写方式和字典相互转化
Apr 18 Python
python + selenium 刷B站播放量的实例代码
Jun 12 Python
Python3编程实现获取阿里云ECS实例及监控的方法
Aug 18 #Python
浅谈django开发者模式中的autoreload是如何实现的
Aug 18 #Python
Python绑定方法与非绑定方法详解
Aug 18 #Python
python字典DICT类型合并详解
Aug 17 #Python
Python时间的精准正则匹配方法分析
Aug 17 #Python
Python实现运行其他程序的四种方式实例分析
Aug 17 #Python
python进阶_浅谈面向对象进阶
Aug 17 #Python
You might like
php读取30天之内的根据算法排序的代码
2008/04/06 PHP
php5编程中的异常处理详细方法介绍
2008/07/29 PHP
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
Javascript中Eval函数的使用说明
2008/10/11 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
2012/03/01 Javascript
原生js拖拽(第一课 未兼容)拖拽思路
2013/03/29 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
JavaScript实现的双向跨域插件分享
2015/01/31 Javascript
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
jquery中ajax跨域方法实例分析
2015/12/18 Javascript
图片上传之FileAPI与NodeJs
2017/01/24 NodeJs
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
详解JavaScript添加给定的标签选项
2018/09/17 Javascript
详解react阻止无效重渲染的多种方式
2018/12/11 Javascript
小程序实现搜索框功能
2020/03/26 Javascript
node 标准输入流和输出流代码实例
2019/09/19 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
Python构造函数及解构函数介绍
2015/02/26 Python
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
使用python Telnet远程登录执行程序的方法
2019/01/26 Python
python程序快速缩进多行代码方法总结
2019/06/23 Python
centos7之Python3.74安装教程
2019/08/15 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
Python命名空间及作用域原理实例解析
2020/08/12 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
学生请假条格式
2014/04/11 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
Java完整实现记事本代码
2022/06/16 Java/Android