Python开发还在用virtualenv?不如了解下pipenv...#华为云·寻找黑马程序员#
又见 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...#华为云·寻找黑马程序员#的更多相关文章
- 车标知识学习网页开发,与Flask通过base64展示二进制图片 #华为云·寻找黑马程序员#
万法同源 一直觉得可能自己不太适合搞技术,更适合在天桥底下支个摊子说书.技术的东西从来没人关注,扯东扯西的文章莫名的火.之前的一篇文章MarkDown添加图片的三种方式不管是在技术为主的CSDN还是娱 ...
- 使用Python开发小说下载器,不再为下载小说而发愁 #华为云·寻找黑马程序员#
需求分析 免费的小说网比较多,我看的比较多的是笔趣阁.这个网站基本收费的章节刚更新,它就能同步更新,简直不要太叼.既然要批量下载小说,肯定要分析这个网站了- 在搜索栏输入地址后,发送post请求获取数 ...
- #华为云·寻找黑马程序员# 如何实现一个优雅的Python的Json序列化库
在Python的世界里,将一个对象以json格式进行序列化或反序列化一直是一个问题.Python标准库里面提供了json序列化的工具,我们可以简单的用json.dumps来将一个对象序列化.但是这种序 ...
- 将Android手机打造成你的Python开发者桌面#华为云·寻找黑马程序员#
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- 三伏天里小试牛刀andriod 开发 #华为云·寻找黑马程序员#
2019年07月,北京,三伏天,好热啊.越热自己还越懒得动换(肉身给的信号),但是做为产品经理/交互设计师的,总想着思考些什么(灵魂上给的信号),或者是学习些什么,更有利于将来的职业发展吧,哈哈哈.工 ...
- python让你再也不为文章配图与素材发愁,让高清图片占满你的硬盘! #华为云·寻找黑马程序员#
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- Flask开发VIP版HttpServer #华为云·寻找黑马程序员#
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- 三伏天里小试牛刀andriod 开发 #华为云·寻找黑马程序员#【华为云技术分享】
2019年07月,北京,三伏天,好热啊.越热自己还越懒得动换(肉身给的信号),但是做为产品经理/交互设计师的,总想着思考些什么(灵魂上给的信号),或者是学习些什么,更有利于将来的职业发展吧,哈哈哈.工 ...
- 移动端开发语言的未来的猜想#华为云·寻找黑马程序员#【华为云技术分享】
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/devcloud/article/detai ...
随机推荐
- ASCALL码对照表
ASCALL码对照表 目前计算机中用得最广泛的字符集及其编码,是由美国国家标准局(ANSI)制定的ASCII码(American Standard Code for Information Inter ...
- git 生成密匙时遇到报错 :Too many arguments.
今天在我用新电脑想要向github上的远程库上传项目时,由于新电脑上的本地库没有与远程库建立连接,所以要在本地生成密匙添加到github上才可以上传,在我执行命令 ssh-keygen -t rsa- ...
- maven安装与在eclipse中配置
需要准备 eclipse maven压缩包 : http://maven.apache.org/download.cgi 1 解压maven压缩包 2 在系统变量中新建变量MAVEN_HOME,值为 ...
- 从多维卷积说起,比较CNN中的全连接和全卷积
一幅图像里包含三个通道,分别是RGB通道.三通道在卷积时是通过累加三个卷积结果得到的. CNN中全连接层的卷积核大小是feature map的大小.比如feature是3*3的,那么该全连接层的卷积核 ...
- java本地缓存
1.为什么要使用缓存 由于服务器.数据库.网络等资源有限,无法支撑越来越多的请求与计算量,所以将一部分数据放在缓存中,以此减小薄弱环节的计算量和请求流程. 网站中缓存的应用场景: 1:可 ...
- springcloud微服务基于redis集群的单点登录
springcloud微服务基于redis集群的单点登录 yls 2019-9-23 简介 本文介绍微服务架构中如何实现单点登录功能 创建三个服务: 操作redis集群的服务,用于多个服务之间共享数据 ...
- MD5 加盐加密
一.概述 MD5(Message Digest Algorithm 5),是一种散列算法,是不可逆的,即通过md5加密之后没办法得到原文,没有解密算法. 在一般的项目中都会有登录注册功能,最简单的, ...
- Spring Bean的定义及作用域
目录: 了解Spring的基本概念 Spring简单的示例 Bean的定义 简单地说Bean是被Spring容器管理的Java对象,Spring容器会自动完成对Bean的实例化. 那么什么是容器呢?如 ...
- open-falcon监控系统
官方文档 https://book.open-falcon.org/zh/intro/index.html 一.Open-Falcon介绍 1.监控系统,可以从运营级别(基本配置即可),以及应用级别( ...
- python:正则1
鱼c(扩展阅读): Python3 如何优雅地使用正则表达式(详解一) Python3 如何优雅地使用正则表达式(详解二) Python3 如何优雅地使用正则表达式(详解三) Python3 如何优雅 ...