本文正在参加「金石方案 . 分割6万现金大奖」

前语

总算能够挤出一点时刻来总结最近学到的一些技术知识点了,博主这两周被居家阻隔-会集阻隔-居家阻隔来回折腾,现在总算是得到解放能够空出的时刻来写写博客了,可是项目又催的紧,写博文的时刻仍是有限,这周我会尽量更新博文带来更多干货知识,一直以来谢谢我们的支撑!学习是一个不断坚持的动态进程,学以致用才是要害。

一、为什么运用pipenv?

首要咱们要理解pipenv存在的开发驱动是什么,关于python虚拟环境来说已经有virtualenv了,在anaconda直接切换一下环境就好了,那么为什么要运用pipenv这个虚拟管理东西呢?

再者就是为什么要运用虚拟环境,咱们直接将一切的库都会集装置到一个环境中,想怎么运用就怎么运用,直接调取任何库就能够完结功用,为啥要将其他的库给分隔呢?

那么首要来讲讲将一切库都集成到一个环境下带来的问题,可能前期会觉得特别便当,可是比及开发的项目越来越多或者是有打包的需求的话,就很麻烦了,总结一下共有三点坏处:

  • 库之间版别调试,切换问题。关于每个库来说都有兼容与不兼容的python版别,一些特别的库,比方Jython库就不支撑3.x以上的库,仅支撑2.7的。假如你的项目需求运用到例如此类的库,可是总不行能将本来的python版别给完全删去从头装过该版别的库。那么环境管理东西就派上用场了。
  • 运用pyinstaller打包成为一个exe程序,一般来说假如运用原始的环境去打包的话,那么由于pyinstaller的特性会使得打包的文件过于巨大。那是因为pyinstaller打包会将整个环境的依靠库统一打包起来,而一些该程序没有用到的库会造成冗余问题。
  • 包之间的依靠版别抵触,有时候集成了过多包会造成这个情况,相互依靠之间的包版别会抵触,可是假如都会集到一个环境里边就很难排查。

故有以上场景就诞生了不同python环境集成各种不同版别不同包的需求,那么让咱们再来了解一下这些虚拟环境管理东西的对比。

virtualenv

  • 一个操作系统下,能够有多个“操作系统等级的”Python解说器;
  • 每个Python解说器有一个指向自己的pip东西,两者一一对应;
  • 经过virtualenv能够虚拟任何一个“操作系统等级的”Python解说器成为一个“虚拟等级”的解说器;
  • 每个“虚拟等级”的解说器又具有自己独立的pip东西和site-packages。

virtualenvwrapper

virtualenvwrapper是对virtualenv接口的封装。virtualenvwrapper会将虚拟环境的目录统一保存,不需手动管理,运用起来更加便当;

pipenv

pipenv是Kenneth Reitz在2017年1月发布的Python依靠管理东西,现在由PyPA保护。你能够把它看做是pip和virtualenv的组合体,而它基于的Pipfile则用来代替旧的依靠记载方法(requirements.txt),pipenv 在易用性上要简略许多,同时增加了 lock 文件,能更好的确定版别。假如没有特别要求能够 pipenv 直接运用 lock 的版别,开发又能够小步迭代,完成依靠的稳步升级。

pipenv优缺点

长处:

  • 自动关联项目相关的 virtualenv,能够快速的加载 virtualenv 。
  • 提供的pipenv代替pip并自带一个依靠清单Pipfile,和依靠确定Pipfile.lock。
  • Pipfile除了依靠清单还支撑固定pypi源地址,固定python版别。
  • Pipfile还支撑dev依靠清单.pipenv install的包会强制运用Pipfile中的源.
  • 运用pipenv graph指令能够看到依靠树。
  • 能够直接切换python2和python3

缺点:

  • Windows下指令行终端开头没有没有venv的称号,让你不知道是否在虚拟环境中,简单误操作
  • 永久设置了Pipfile文件中的源今后,Pipfile文件中看到的仍是官方源,可是实际上是已经走了你设置的源了。

二、运用过程

1.装置

推荐运用python3版别:

pip3 install pipenv

装置完结后可经过

pipenv --version

检查版别和检测是否装置成功:

Pipenv使用指南:轻量级虚拟环境管理工具详解

2.创立虚拟环境

运用指令pipenv install,可在当时目录下创立 PipfilePipfile.lock 文件,在虚拟环境目录下新增一个虚拟环境

Pipfile文件: 用于保存项目的python版别、依靠包等相关信息 。

[[source]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
verify_ssl = true
name = "pypi"
[packages]
requests = "*"
pyyaml = "*"
Django = "*"
[dev-packages]
pytest = "*"
[requires]
python_version = "3.7"
[scripts]
django = "python manage.py runserver 0.0.0.0:8080"
  • source 用来设置库房地址,即指定镜像源下载虚拟环境所需求的包

  • packages 用来指定项目依靠的包,能够用于出产环境和生成requirements文件

  • dev-packages 用来指定开发环境需求的包,这类包只用于开发进程,不用于出产环境。

    • requires 指定方针Python版别
  • scripts 添加自定义的脚本指令,并经过 pipenv run + 称号 的方法在虚拟环境中履行对应的指令 。

Pipfile 文件能够复制到其他项目内,经过履行pipenv install指令, 依据这个 Pipfile 文件生成虚拟环境和依靠包的装置

Pipfile.lock文件: 经过hash算法将包的称号和版别,及依靠关系生成哈希值,保证包的完整性,除修正镜像源,非必要情况不对该文件进行修正。

Pipenv使用指南:轻量级虚拟环境管理工具详解

指定目录寄存虚拟环境

寄存虚拟环境的目录默许指定是C:\Users\bobo.virtualenvs目录下。

Pipenv使用指南:轻量级虚拟环境管理工具详解

pipenv install --python +版别号

可指定python版别创立虚拟环境。

也能够经过:

pipenv install --two           创立指定python2.x版别的虚拟环境
pipenv install --three         创立指定python3.x版别的虚拟环境

下载默许的环境。

装置第三方库

pipenv兼容pip指令,相同运用pipenv install + 包名的方法装置第三方库。在此目录下翻开pycharm时会默许加载此目录对应的虚拟环境。

在pycharm的 Terminal终端输入指令:

pipenv install requests

就能够了

修正镜像源

假如官方源站装置第三方库的速度很慢,装置失利,能够修正镜像源

pipenv兼容pip指令,所以也能够在指令加上参数

pipenv install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

若想要永久该虚拟环境的镜像源,则需求翻开项目目录下的Pipfile 、 Pipfile.lock 文件,将source栏 url = “pypi.org/simple” 链接内容修正为需求的镜像源,例如修正为清华的镜像源url = “pypi.tuna.tsinghua.edu.cn/simple”

Pipenv使用指南:轻量级虚拟环境管理工具详解

装置到dev环境

装置调试东西、性能测试东西、python语法东西,这些内容仅在本地环境有用,出产环境不需求这些。

比方单元测试相关的包unittest、pytest,只在开发阶段有用,为了和出产环境的包区别隔来,能够经过指令 pipenv install –dev + 包名将其归类到【dev-packages】下。

例如装置pytest到开发环境

pipenv install --dev pytest

常用指令

pipenv兼容大部分的pip指令,所以 pip指令能完成的内容,也能经过pipenv指令完成

卸载指令

在项目地点虚拟环境中卸载requests包,并在Pipfile文件移除包名

pipenv uninstall requests

在项目地点虚拟环境中卸载一切包,并在Pipfile文件移除包名

pipenv uninstall --all

在项目地点虚拟环境中卸载一切dev环境的包,并在Pipfile文件移除[dev-packages]中的一切包名

pipenv uninstall --all --dev

更新指令

在项目地点虚拟环境中更新requests包,并在Pipfile.lock文件中更新相应版别信息

pipenv update requests

在项目地点虚拟环境中更新一切包,并在Pipfile.lock文件中更新相应版别信息

pipenv update

在项目地点虚拟环境中检查已过期的包的信息

pipenv update --outdated

依据项目地点虚拟环境的Pipfile文件生成/更新Pipfile.lock文件中的依靠包信息

pipenv lock

检查指令

检查项目方位

pipenv --where

检查虚拟环境方位

pipenv --venv

检查虚拟环境python解说器方位

pipenv --py

检查依靠包信息

pipenv graph

激活与退出虚拟环境

运用pipenv install 指令创立虚拟环境时,创立成功会默许激活虚拟环境

若想退出虚拟环境,可输入 exit 退出(仅适用于黑屏终端,pycharm默许翻开项目就加载了虚拟环境,只能修正指定的虚拟环境) 目录下存在 Pipfile 、 Pipfile.lock 文件,已创立过虚拟环境,可经过指令 pipenv shell进行激活。

删去虚拟环境

直接在该目录下面翻开终端输入:

pipenv --rm

该指令无法在pycharm的Terminal终端履行。删去虚拟环境后,假如目录下仍存在 PipfilePipfile.lock 文件,能够经过pipenv install从头进行装置虚拟环境,且从头装置的虚拟环境,称号与删去前共同

生成requirements.txt 文件

pipenv能够像virtualenv相同运用指令生成requirements.txt文件

pipenv lock -r --dev >requirement.txt

指令中的--dev并不是说把 Pipfile文件中 [dev-packages]下的包导出,而是把一切依靠包导出。 pipenv还能够经过requirements.txt文件 装置依靠包

pipenv install -r requirement.txt

经过pyinstaller导出

首要需求到装置pipenv虚拟环境下的目录装置pyinstaller

pipenv install pyinstaller

将依靠包都装置完结后直接:

#开始打包
pyinstaller -Fw -i xx.ico ./xxx.py

就好了

点关注,防走丢,如有疏忽之处,请留言指导,非常感谢

以上就是本期全部内容。我是fanstuck ,有问题我们随时留言评论 ,咱们下期见。