python包管理工具pipenv的使用
一、简介
Pipenv,它的项目简介为 Python Development Workflow for Humans,是 Python 著名的 requests 库作者 kennethreitz 写的一个包管理工具,它可以为我们的项目自动创建和管理虚拟环境并非常方便地管理 Python 包,现在它也已经是 Python 官方推荐的包管理工具。
Pipenv 我们可以简单理解为 pip 和 virtualenv 的集合体,它可以为我们的项目自动创建和管理一个虚拟环境。virtualenv 在使用时我们需要手动创建一个虚拟环境然后激活,Pipenv 会自动创建。另外我们之前可能使用 requirements.txt 文件来标识项目所需要的依赖,但是这样会带来一些问题,如有的 requirements.txt 中只是将库名列出来了,没有严格指定版本号,这样就可能会导致不同时间安装的库版本是不同的,如 requirements.txt 文件中对 Django 的依赖只写了一个 django
,可能在 2016 年的时候运行安装会安装 Django 的 1.x 版本,到了 2017 年就会安装 Django 的 2.x 版本,所以可能导致一些麻烦。为了解决这个问题,Pipenv 直接弃用了 requirements.txt,会同时它会使用一个叫做 Pipfile 和 Pipfile.lock 的文件来管理项目所需的依赖包,而不再是简单地使用 requirements.txt 文件来记录项目所需要的依赖。
总的来说,Pipenv 可以解决如下问题:
- 我们不需要再手动创建虚拟环境,Pipenv 会自动为我们创建,它会在某个特定的位置创建一个 virtualenv 环境,然后调用
pipenv shell
命令切换到虚拟环境。 - 使用 requirements.txt 可能会导致一些问题,所以 Pipenv 使用 Pipfile 和 Pipfile.lock 来替代之,而且 Pipfile 如果不存在的话会自动创建,而且在安装、升级、移除依赖包的时候会自动更新 Pipfile 和 Pipfile.lock 文件。
- 广泛使用 Hash 校验,保证安全性。
- 可以更清晰地查看 Python 包及其关系,调用
pipenv graph
即可呈现,结果简单明了。 - 可通过自动加载 .env 读取环境变量,简化开发流程。
pipenv是pip的升级版,超好用,是requests作者K神搞出来的,就是一个字,真TaM香!
pycharm打开项目后在settings中给项目配置本地解释器环境
第二步:【安装pipenv】
直接在底部打开命令行,会自动就切入项目内部,或者打开cmd命令窗口,然后自己cd到项目根目录,如果之前没有用过pipenv,就直接:
pip install pipenv
检查是否成功:
pipenv --version
第三步:【创建虚拟环境、安装依赖包】
-
情况一:你拿来的项目一般自带Pipfile.py和Pipfile.lock,这个就是pipenv的强大之处所在,每一次安装卸载模块、项目解释器、源信息等,会自动的动态记录在这里面,项目如果有这两个文件,在命令行中切入到Pipfile.py所在目录执行,比如下图就要切入src/wibot:(如果你在主目录的话看不到Pipfile.py,创建出来的环境里面没有模块)
-
情况二:新建项目没有Pipfile.py等文件,直接install后会自动生成的,只是空的而已,然后你安装什么模块时他会自动更新记录
pipenv install
即可完成虚拟环境创建、安装所有需要的依赖,超强大,贼好用
查看所有安装模块
pipenv graph
他会在C:\Users\13154.virtualenvs(也可以自定义,网上有教程)里面自动为项目创建一个虚拟的包管理文件
其中包含隔离的Python解释器环境,并且安装pip、wheel、setuptools等基本的包
第四步:【下载模块】
以后就不要再使用pip,忘记他记好了,使用pipenv 来代替pip,命令格式相似
eg:pipenv install pymysql
第五步:【启动项目】
-
方式一:因为使用了pipenv,所以不要再使用pip启动,使用它你就找不到pipenv安装的一系列模块,我们直接使用pipenv启动:
eg: pipenv run python robot_run.py
-
方式二:鼠标右键启动、顶部绿色小三角启动(pycharm默认是使用pip的,不能直接用需要自定义,,设置好后就可以快捷启动了)
注意事项:
1.你使用pipenv安装的包,pycharm可能识别不了,就会飘红,不影响运行
2.settings中的解释器环境可以全程使用自己的本地真实环境,不用切换到pipenv创建的虚拟环境,你使用pipenv命令启动就好了