美文网首页Python文集Mongo 清风Python
Python开发还在用virtualenv?不如了解下pipen

Python开发还在用virtualenv?不如了解下pipen

作者: 清风Python | 来源:发表于2019-07-18 01:35 被阅读176次
    段子博主

    早在之前公司写博客的时候就发现,相比于技术内容,大家更爱看我讲段子,现在开始写公众号了一样这个结局。总结知识的文章,没多少人看,瞎捣鼓手机的、一堆人关注...你们这么做真的好吗,是我的技术文章写得层次太低,还是段子讲的太有趣?我赵曰天不服啊!


    简书·喜欢和赞
    年老体弱

    今天西安下雨很凉快,吃完饭去理发,老板说你才剪的头又这么长了,人闲长头发肯定一天没事儿干吧。我想说自从搞公众号开始,已经连着一个多月天天2点多睡觉了。周五晚上休息还跟大学同学dota1搞通宵真的受不了,然后坐着理发睡着了...
    一个多月的规律发现周六、周日两天的阅读量很差,大家放假都想着空调可乐加西瓜,啤酒鸡翅爆米花,没有几个人看公众号。所以吧,以后周六、周日就不更新了,保证一周五更。周末的时间腾出来学一些偏重自己喜好的知识,希望大家体谅。

    又见 Kenneth Reitz
    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


    Pipfile
    修改pip源

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

    修改pip源
    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,会将我们安装的包进行依赖树展示,如下图:


    pipenv依赖树
    项目迁移

    我们之前使用的virtualenv,可以迁移至pipenv吗?
    答案是肯定的,只需要先通过pipenv install -r requirements.txt将原有的模块进行迁移,之后使用
    同样的,从pipenv迁移至virtualenv项目,也可以使用pipenv run pip freeze 生成requirements.txt。

    .env介绍

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

    命令集合
    column column
    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
    .flaskenv

    我们在开发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呢?当然...只需要按照下图配置即可:


    pycharm配置pipenv
    pycharm启动
    The End

    OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的“在看”。
    期待你关注我的公众号清风Python,如果你觉得不错,希望能动动手指转发给你身边的朋友们。

    相关文章

      网友评论

        本文标题:Python开发还在用virtualenv?不如了解下pipen

        本文链接:https://www.haomeiwen.com/subject/trihlctx.html