又见 Kenneth Reitz



之前公众号写了一篇文章爬虫新宠requests_html 带你甄别2019虚假大学,其中主要是为了介绍模块**requests_html,这个模块的作者还开发了requests模块,相当的犀利。没错,他就是Kenneth Reitz,一个被编程耽误的摄影师,哈哈,网上还有他的一些励志故事,喜欢的朋友可以去搜搜,个人比较崇拜他。那么,今天又要介绍他的另外一个牛13之作,pipenv**

pipenv

介绍

过去大家经常使用virtualenv来创建虚拟环境,通过pip freeze生成requirements.txt文件,然后通过pip install -r requirements.txt进行项目模块的管理与安装。这样的安装存在很多问题,比如每次更新模块后,需要手动的重新生成依赖文件,等等问题。但看过今天的文章,你会更喜欢pipenv这款工具。

Pipenv: Python Development Workflow for Humans

Pipenv试图解决的问题是多方面的:

  • 您不再需要单独使用pip和使用virtualenv。他们一起工作。
  • 管理requirements.txt文件可能会有问题,因此Pipenv使用即将推出的文件Pipfile,Pipfile.lock而这对于基本用例来说是优越的。
  • 哈希总是随处可见。安全。自动暴露安全漏洞。
  • 让您深入了解您的依赖图(例如$ pipenv graph)。
  • 通过加载.env文件简化开发工作流程。
  • 这哥们所有的库,都是for Humans,要不要上升这么高的高度…

pipenv安装

pip install pipenv即可轻松完成安装…

之后创建一个我们的项目目录并进入目录输入:pipenv install 创建目录对应的虚拟机。

虚拟机创建目录:

windows : %homepath%.virtualenvs\projectname-随机码

Linux\Mac: ~/.local/share/virtualenvs/projectname-随机码

虚拟机创建完成后,会在项目目录内生成两个包管理文件文件Pipfile、Pipfile.lock

修改pip源

pipenv shell 进入虚拟机

之后线比急着下载模块,我们需要先修改pip源,因为默认的源官方源速度太慢且连接不稳定。网上说的什么命令行修改的,你趁早别用老老实实的进入Pipfile文件内部修改。

source的标红两个地方需要注意,我用的是阿里的镜像,所以verify_ssl无需修改,但是有些镜像是http协议的,你需要吧verify_ssl改为false,否则报错无法使用。

模块安装

我们看到PIPfile中有两个section标签,一个是dev-packages,一个是packages,这两个有什么区别呢?

**pipenv install flask**此时,我们安装的是packages

pipenv install watchdog --dev 此时,我们安装的是dev-packages

这两者有什么区别呢?比如我们在开发的过程中会引入一些工具,但这些工具在交付或者上线的时候无需安装,此时我们可以使用–dev的方式安装,而客户在初始化安装时使用pipenv install就不会将开发使用的模块剂型安装,针对环境进行模块分离,是否很犀利?

Pipfile.lock

刚才说到了Pipfile,那么Pipfile.lock这个文件又是干嘛的?

Pipfile.lock是一个json文件,详细记录了,我们安装的每一个模块及模块的详细信息,如:名称、版本、Hash值。这样安装卸载变得更为容易与准确。

模块依赖展示

这个功能是pipenv比较人性化的一个命令行。类似于npm list,会将我们安装的包进行依赖树展示,如下图:



项目迁移

我们之前使用的virtualenv,可以迁移至pipenv吗?

答案是肯定的,只需要先通过**pipenv install -r requirements.txt**将原有的模块进行迁移,之后使用

同样的,从pipenv迁移至virtualenv项目,也可以使用pipenv run pip freeze 生成requirements.txt。

.env介绍

在虚拟机中,我们的环境信息如何保存呢?比如邮箱,入口方法,等等…这时候我们需要使用到.env的文件。

命令集合


我们在开发Flask项目时,需要创建.flaskenv的文件,用来设置我们的相关环境变量,比如:

FLASK_APP=phraces
FLASK_ENV=development

但在使用配置文件之前,我们首先需要安装**pip install python-dotenv**才能进行配置文件的读取操作。

当我们使用flask run命令启动flask程序时,系统会默认去寻找名为app.py的文件进行加载,但如果我们的启动文件是phraces.py时,该如何操作?

另外,当我们添加FLASK_ENV=development时,可以监控文件变动,进行动态reload操作。这就是.flaskenv的用途

pycharm运行pipenv

我们每次通过命令行去启动flask是否太过麻烦?能否直接通过pycharm来启动flask的pipenv呢?当然…只需要按照下图配置即可:

The End

OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的“在看”。

期待你关注我的公众号**清风Python**,如果你觉得不错,希望能动动手指转发给你身边的朋友们。

作者:清风Python

Python开发还在用virtualenv?不如了解下pipenv...#华为云·寻找黑马程序员#的更多相关文章

  1. 车标知识学习网页开发,与Flask通过base64展示二进制图片 #华为云·寻找黑马程序员#

    万法同源 一直觉得可能自己不太适合搞技术,更适合在天桥底下支个摊子说书.技术的东西从来没人关注,扯东扯西的文章莫名的火.之前的一篇文章MarkDown添加图片的三种方式不管是在技术为主的CSDN还是娱 ...

  2. 使用Python开发小说下载器,不再为下载小说而发愁 #华为云·寻找黑马程序员#

    需求分析 免费的小说网比较多,我看的比较多的是笔趣阁.这个网站基本收费的章节刚更新,它就能同步更新,简直不要太叼.既然要批量下载小说,肯定要分析这个网站了- 在搜索栏输入地址后,发送post请求获取数 ...

  3. #华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库

    在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化.但是这种序 ...

  4. 将Android手机打造成你的Python开发者桌面#华为云·寻找黑马程序员#

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  5. 三伏天里小试牛刀andriod 开发 #华为云·寻找黑马程序员#

    2019年07月,北京,三伏天,好热啊.越热自己还越懒得动换(肉身给的信号),但是做为产品经理/交互设计师的,总想着思考些什么(灵魂上给的信号),或者是学习些什么,更有利于将来的职业发展吧,哈哈哈.工 ...

  6. python让你再也不为文章配图与素材发愁,让高清图片占满你的硬盘! #华为云·寻找黑马程序员#

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  7. Flask开发VIP版HttpServer #华为云·寻找黑马程序员#

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  8. 三伏天里小试牛刀andriod 开发 #华为云·寻找黑马程序员#【华为云技术分享】

    2019年07月,北京,三伏天,好热啊.越热自己还越懒得动换(肉身给的信号),但是做为产品经理/交互设计师的,总想着思考些什么(灵魂上给的信号),或者是学习些什么,更有利于将来的职业发展吧,哈哈哈.工 ...

  9. 移动端开发语言的未来的猜想#华为云·寻找黑马程序员#【华为云技术分享】

    版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...

随机推荐

  1. 【IOS开发—视图控制器】

    一.UIViewController 视图控制器是UIViewController类或者其子类对象,每个视图控制器都负责管理一个视图层次结构.在UIViewController中有一个重要的UIVie ...

  2. Project Euler 54: Poker hands

    在纸牌游戏中,一手包含五张牌并且每一手都有自己的排序,从低到高的顺序如下: 大牌:牌面数字最大 一对:两张牌有同样的数字 两对:两个不同的一对 三条:三张牌有同样的数字 顺子:所有五张牌的数字是连续的 ...

  3. 学习笔记之vim的使用

    很多刚学习linux编程的人总是对vim有一种恐惧,我自己就是这么回事的. 可是当你努力的去尝试学习使用后,才发现它的精髓所在. 在我看来,让vim变得好用的前提是要安装两个插件,ctags和tagl ...

  4. ubuntu下minicom和usb串口转接

    ubuntu下minicom和USB转串口(转) (2013-03-23 21:07:54) 转载▼ 标签: it 分类: 嵌入式linux minicom是linux下串口通信的软件,它的使用完全依 ...

  5. css3 mask遮罩动画(照明灯效果)

    <pre><!DOCTYPE html><html lang="en"><head><meta charset="U ...

  6. jquery 数字滚动方法

    jquery 数字滚动方法用的是countUp.js这个插件 target = 目标元素的 ID:startVal = 开始值:endVal = 结束值:decimals = 小数位数,默认值是0:d ...

  7. Linux命令实战(二)

    1.printf格式化输出(format and print data) 语法:printf(选项)(参数) 参数 输出格式:指定数据输出时的格式: 输出字符串:指定要输出的数据. 格式替代符 %c ...

  8. PowerMock学习(一)之PoweMock的入门--模拟新增学生操作

    关于powermock 在TDD领域Mock框架有很多,比如EasyMock,JMock,Mockito.可能有些同学会好奇了,为什么要重点把powermock拿出来呢,因为powermock可以解决 ...

  9. linux与Windows进程控制

    进程管理控制 这里实现的是一个自定义timer用于统计子进程运行的时间.使用方式主要是 timer [-t seconds] command arguments 例如要统计ls的运行时间可以直接输入t ...

  10. PHP产生不重复随机数的5个方法总结

    无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地.在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道,所以,对于PHP如何产生不重复随机数常用的几种方法小结一下 无论是We ...