作者丨王翔丨
来源丨清风Python(BreezePython)
虚拟机创建目录:
这两者有什么区别呢?比如我们在开发的过程中会引入一些工具,但这些工具在交付或者上线的时候无需安装,此时我们可以使用--dev的方式安装,而客户在初始化安装时使用pipenv install就不会将开发使用的模块进行安装,针对环境进行模块分离,是否很犀利? Pipfile.lock 刚才说到了Pipfile,那么Pipfile.lock这个文件又是干嘛的?
Pipfile.lock是一个json文件,详细记录了,我们安装的每一个模块及模块的详细信息,如:名称、版本、Hash值。这样安装卸载变得更为容易与准确。 模块依赖展示 这个功能是pipenv比较人性化的一个命令行。类似于npm list,会将我们安装的包进行依赖树展示,如下图: 项目迁移 我们之前使用的virtualenv,可以迁移至pipenv吗?
答案是肯定的,只需要先通过
同样的,从pipenv迁移至virtualenv项目,也可以使用pipenv run pip freeze 生成requirements.txt。 .env介绍 在虚拟机中,我们的环境信息如何保存呢?比如邮箱,入口方法,等等…这时候我们需要使用到.env的文件。 命令集合 命令 说明
当我们使用flask run命令启动flask程序时,系统会默认去寻找名为app.py的文件进行加载,但如果我们的启动文件是phraces.py时,该如何操作?
另外,当我们添加FLASK_ENV=development时,可以监控文件变动,进行动态reload操作。这就是.flaskenv的用途
又见 Kenneth Reitz
提到Kenneth Reitz,相信大家会觉得陌生,但如果告诉你requests
模块是这位大佬开发的,你还会对他感到陌生么?不仅如此,他还在之后推出了requests模块的升级版requests_html。
之前写过一篇对这个升级版的模块做了相关介绍。喜欢的朋友可以去看看
爬虫新宠requests_html学习 带你甄别2019高考野鸡大学
。
https://mp.weixin.qq.com/s/-aP6EW9ibN1bZpqWjxGAEg
Kenneth Reitz还是一个被编程耽误的摄影师,网上有他的很多的励志故事,喜欢的朋友可以去搜搜,个人比较崇拜他。那么,今天又要介绍他的另外一个牛13之作,虚拟机开发环境pipenv。
pipenv介绍
过去大家经常使用virtualenv来创建虚拟环境,通过pip freeze生成requirements.txt文件,然后通过pip install -r requirements.txt进行项目模块的管理与安装。这样的安装存在很多问题,比如每次更新模块后,需要手动的重新生成依赖文件,等等问题。但看过今天的文章,你会更喜欢pipenv这款工具。Pipenv: Python Development Workflow for Humans这哥们所有的库,精神层次都是for Humans,要不要上升到这样的高度…
Pipenv试图解决的问题是多方面的:
- 您不再需要单独使用pip和使用virtualenv。他们一起工作。
- 管理requirements.txt文件可能会有问题,因此Pipenv使用即将推出的文件Pipfile,Pipfile.lock而这对于基本用例来说是优越的。
- 哈希总是随处可见。安全。自动暴露安全漏洞。
- 让您深入了解您的依赖图(例如$ pipenv graph)。
- 通过加载.env文件简化开发工作流程。
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
此时,我们安装的是packagespipenv 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的文件。 命令集合 命令 说明
pipenv --where | 列出本地工程路径 |
pipenv --venv | 列出虚拟环境路径 |
pipenv --py | 列出虚拟环境的Python可执行文件 |
pipenv install | 创建虚拟环境 |
pipenv install [moduel] | 安装包 |
pipenv install [moduel] --dev | 安装包到开发环境 |
pipenv uninstall[module] | 卸载包 |
pipenv uninstall --all | 卸载所有包 |
pipenv graph | 查看包依赖 |
pipenv lock | 生成lockfile |
pipenv run python [pyfile] | 运行py文件 |
pipenv --rm | 删除虚拟环境 |
Flask使用pipenv
我们在开发Flask项目时,需要创建.flaskenv的文件,用来设置我们的相关环境变量,比如:1FLASK_APP=phraces2FLASK_ENV=development
但在使用配置文件之前,我们首先需要安装pip install python-dotenv
才能进行配置文件的读取操作。当我们使用flask run命令启动flask程序时,系统会默认去寻找名为app.py的文件进行加载,但如果我们的启动文件是phraces.py时,该如何操作?
另外,当我们添加FLASK_ENV=development时,可以监控文件变动,进行动态reload操作。这就是.flaskenv的用途
pycharm运行pipenv
我们每次通过命令行去启动flask是否太过麻烦?能否直接通过pycharm来启动flask的pipenv呢?当然…只需要按照下图配置即可:
近期精彩内容推荐:
公务员和程序员,你会选哪个呢?
复工期来临,腾讯员工晒的照片引网友关注
技术总监:求求你别写这么多if...else..了
装X黑客指南:如何在小白面前秀一手
在看点这里好文分享给更多人↓↓