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 ...
随机推荐
- 域名解析 | A记录 ,CNAME,MX,NS 你懂了吗
域名解析 | A记录 ,CNAME,MX,NS 你懂了吗 域名解析 什么是域名解析?域名解析就是国际域名或者国内域名以及中文域名等域名申请后做的到IP地址的转换过程.IP地址是网路上标识您站点的数字地 ...
- 2019年10月13日 linux习题 wangqingchao
1. GUN的含义是: GNU's Not UNIX . 2. Linux一般有3个主要部分:内核.命令解释层.实用工具. 3.POSIX是可携式操作系统接口的缩写,重点在规范核心与应用程序之间的接口 ...
- jstl-将List中的数据展示到表格中
功能: 使用jstl将List中的数据动态展示到Jsp表格中,并实现隔行换色功能. 效果图: Jsp代码: <%@ page import="java.util.ArrayList&q ...
- IDEA+JSP+Servlet+Tomcat简单的登录示例
1.用IDEA新建Java WEB项目并配置Tomcat 这一部分可以参考之前的一篇随笔 https://www.cnblogs.com/lbhym/p/11496610.html 2.导入Servl ...
- vue项目iframe的传值问题
前言 项目需要,我需要引入一个已经封装好的浏览器插件.插件只能以html的方式调用, 所以.我把插件的使用封装了一个html页面.vue项目则利用iframe的方式引入. 到这里我就遇到了一个问题,那 ...
- ESP8266 智能配网 断电重连
ESP8266 智能配网 断电重连 #include <ESP8266WiFi.h> bool autoConfig() { WiFi.begin(); for (int i = 0; i ...
- nyoj 20-吝啬的国度 (DFS)
20-吝啬的国度 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:12 submit:43 题目描述: 在一个吝啬的国度里有N个城市,这N个城市间只有 ...
- nyoj 399-整除个数 (整除)
399-整除个数 内存限制:64MB 时间限制:3000ms 特判: No 通过数:9 提交数:18 难度:1 题目描述: 1.2.3… …n这n(0<n<=1000000000)个数中有 ...
- 领扣(LeetCode)交替位二进制数 个人题解
给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等. 示例 1: 输入: 5 输出: True 解释: 5的二进制数是: 101 示例 2: 输入: 7 输出 ...
- centos下安装composer
centos下,yum 安装没效果,按照官网的安装方法: curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/ ...