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 dict 字典 以及 赋值 引用的一些实例(详解)
Jan 20 Python
Python yield 使用方法浅析
May 20 Python
VTK与Python实现机械臂三维模型可视化详解
Dec 13 Python
Flask框架Jinjia模板常用语法总结
Jul 19 Python
Python 中字符串拼接的多种方法
Jul 30 Python
python web自制框架之接受url传递过来的参数实例
Dec 17 Python
自学python的建议和周期预算
Jan 30 Python
keras在构建LSTM模型时对变长序列的处理操作
Jun 29 Python
带你学习Python如何实现回归树模型
Jul 16 Python
Python3 ffmpeg视频转换工具使用方法解析
Aug 10 Python
Python基于callable函数检测对象是否可被调用
Oct 16 Python
Python多线程 Queue 模块常见用法
Jul 04 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遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
2016/10/29 PHP
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
php+ajax实现商品对比功能示例
2019/04/13 PHP
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
2011/07/31 Javascript
js 事件截取enter按键页面提交事件示例代码
2014/03/04 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
jquery手风琴特效插件
2015/02/04 Javascript
jQuery实现拖拽效果插件的方法
2015/03/23 Javascript
javascript中undefined与null的区别
2015/08/16 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
AngularJS基础 ng-mouseleave 指令详解
2016/08/02 Javascript
利用jQuery实现一个简单的表格上下翻页效果
2017/03/14 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
浅谈vue的第一个commit分析
2020/06/08 Javascript
[44:09]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第二局
2016/02/25 DOTA
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
Python3匿名函数lambda介绍与使用示例
2019/05/18 Python
PyQT5速成教程之Qt Designer介绍与入门
2020/11/02 Python
CSS3实现多样的边框效果
2018/05/04 HTML / CSS
AmazeUI 输入框组的示例代码
2020/08/14 HTML / CSS
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
入党申请人的自我鉴定
2013/12/01 职场文书
七年级数学教学反思
2014/01/22 职场文书
庆祝三八妇女节标语
2014/10/09 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
你知道哪几种MYSQL的连接查询
2021/06/03 MySQL
MySQL中utf8mb4排序规则示例
2021/08/02 MySQL
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题