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写的ARP攻击代码实例
Jun 04 Python
python使用PIL给图片添加文字生成海报示例
Aug 17 Python
Python判断一个三位数是否为水仙花数的示例
Nov 13 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
Jan 04 Python
libreoffice python 操作word及excel文档的方法
Jul 04 Python
Python参数类型以及常见的坑详解
Jul 08 Python
Tensorflow中的dropout的使用方法
Mar 13 Python
Python接口测试环境搭建过程详解
Jun 29 Python
Python实现手绘图效果实例分享
Jul 22 Python
Python如何爬取51cto数据并存入MySQL
Aug 25 Python
Pytorch 中net.train 和 net.eval的使用说明
May 22 Python
使用scrapy实现增量式爬取方式
Jun 21 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中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
php中调用其他系统http接口的方法说明
2014/02/28 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
ThinkPHP框架里隐藏index.php
2016/04/12 PHP
php实现基于openssl的加密解密方法
2016/09/30 PHP
php 微信公众平台开发模式实现多客服的实例代码
2016/11/07 PHP
PHP实现微信小程序人脸识别刷脸登录功能
2018/05/24 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
javascript实现类似于新浪微博搜索框弹出效果的方法
2015/07/27 Javascript
JavaScript的设计模式经典之建造者模式
2016/02/24 Javascript
Bootstrap每天必学之标签页(Tab)插件
2020/08/09 Javascript
jquery拼接ajax 的json和字符串拼接的方法
2017/03/11 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
2018/09/28 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
[47:18]完美世界DOTA2联赛循环赛 IO vs FTD BO2第一场 11.05
2020/11/06 DOTA
python根据url地址下载小文件的实例
2018/12/18 Python
python基于opencv检测程序运行效率
2019/12/28 Python
django实现将后台model对象转换成json对象并传递给前端jquery
2020/03/16 Python
python爬虫请求头设置代码
2020/07/28 Python
image-set实现Retina屏幕下图片显示详细介绍
2012/12/24 HTML / CSS
css3学习心得分享
2013/08/19 HTML / CSS
欧洲高端品牌直销店:Fashionesta
2016/08/31 全球购物
介绍一下Make? 为什么使用make
2013/12/08 面试题
小学生演讲稿
2014/01/12 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
业务员岗位职责范本
2015/04/03 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android