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 相关文章推荐
跟老齐学Python之类的细节
Oct 13 Python
python操作sqlite的CRUD实例分析
May 08 Python
Python通过Pygame绘制移动的矩形实例代码
Jan 03 Python
Python3 XML 获取雅虎天气的实现方法
Feb 01 Python
python selenium自动上传有赞单号的操作方法
Jul 05 Python
基于python的socket实现单机五子棋到双人对战
Mar 24 Python
python字符串查找函数的用法详解
Jul 08 Python
python爬虫开发之selenium模块详细使用方法与实例全解
Mar 09 Python
解决pip install psycopg2出错问题
Jul 09 Python
python json.dumps() json.dump()的区别详解
Jul 14 Python
Python命令行参数定义及需要注意的地方
Nov 30 Python
Django migrate报错的解决方案
May 20 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 get_meta_tags()函数
2014/05/12 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
2014/12/18 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
Laravel框架分页实现方法分析
2018/06/12 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
JavaScript 入门基础知识 想学习js的朋友可以参考下
2009/12/26 Javascript
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
Javascript 浮点运算的问题分析与解决方法
2013/08/27 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
Node.js中使用jQuery的做法
2016/08/17 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
基于JavaScript实现数码时钟效果
2020/03/30 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
2018/09/04 Javascript
vue实现按需加载组件及异步组件功能
2019/05/27 Javascript
深入解析koa之异步回调处理
2019/06/17 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
JavaScript语句错误throw、try及catch实例解析
2020/08/18 Javascript
[01:22:42]2014 DOTA2华西杯精英邀请赛 5 24 DK VS LGD
2014/05/26 DOTA
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
win与linux系统中python requests 安装
2016/12/04 Python
Python实现邮件的批量发送的示例代码
2018/01/23 Python
python实现飞机大战微信小游戏
2020/03/21 Python
解决Python 写文件报错TypeError的问题
2020/10/23 Python
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
俄罗斯化妆品和香水网上商店:Iledebeaute
2019/01/03 全球购物
软件测试笔试题
2012/10/25 面试题
经济信息管理专业大学生求职信
2013/09/27 职场文书
网上开商店的创业计划书
2014/01/19 职场文书
电力公司个人求职信范文
2014/02/04 职场文书
2014学习全国两会精神心得体会2000字
2014/03/11 职场文书
教师教学评估方案
2014/05/09 职场文书
解决Python字典查找报Keyerror的问题
2021/05/26 Python
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL