大家好,又见面了,我是你们的朋友全栈君。
Pipenv,它的项目简介为 Python Development Workflow for Humans,是 Python 著名的 requests 库作者 kennethreitz 写的一个包管理工具,它可以为我们的项目自动创建和管理虚拟环境并非常方便地管理 Python 包,现在它也已经是 Python 官方推荐的包管理工具。
溯源
起初,Python没有便利的方式来安装软件包。
后来,Easy Install 安装方便,但卸载不需要的软件包并不容易。
接着,pip逐渐被人们熟练的使用,其具有方便的安装和卸载等诸多优点,但当用户使用不同版本的相同库的时候。不能将软件包彼此隔离。
随着虚拟环境的发展,出现了很多管理虚拟环境的工具:virtualenv,venv,pyenv,pyenv-virtualenv等。它们都可以在pip和requirements.txt文件中很好地发挥作用。
以前我们需要将虚拟环境依赖包的导出为 requirements.txt , 一旦依赖包变动,就要重新导出,而pipenv会自动帮我们生成 Pipfile 和 Pipfile.lock ,Pipfile会随着项目,当我们安装时只需在 Pipfile 和 Pipfile.lock 所在的目录下运行 pipenv install即可。
Pipenv优点。
pipenv由requests库作者Kenneth Reitz开发,结合了pip及virtualenv的功能和优点,其目的是替代virtualenv和pyenv。
- 解决了requirements.txt依赖管理局限的不确定构建问题,提供的pipenv替代pip并自带一个依赖清单Pipfile和依赖锁定Pipfile.lock。
- 有效的的解决了多个项目依赖不同版本的子模块的问题,自动关联项目相关的virtualenv,能够快速的加载virtualenv。
- 解决了依赖分析问题,使用pipenv graph命令可以看到依赖树
- 广泛使用 Hash 校验,保证安全性。
- 可通过自动加载 .env 读取环境变量,简化开发流程。
使用
PyCharm 从 2018.2 版本开始已经支持 pipenv 。
安装
代码语言:javascript复制pip install pipenv
创建环境
一行命令搞定 virtualenv 和 pipfile 的初始化(不初始化则将使用默认版本的Python),它会在你的用户目录下对你的 virtualenv 进行统一管理。如果当前目录下有 requirements.txt 文件,它会非常贴心地帮你自动转换。(注意:切换至新建的python项目目录)。
代码语言:javascript复制cd toutiao
初始化一个 python3 的环境
代码语言:javascript复制pipenv --three
初始化一个 python2 的环境
代码语言:javascript复制pipenv --two
初始化特定版本的环境
代码语言:javascript复制pipenv --python 3.6
进入 / 退出环境
进入环境
代码语言:javascript复制pipenv shell
退出环境
代码语言:javascript复制exit
删除虚拟环境
代码语言:javascript复制pipenv --rm
安装 / 更新 / 卸载依赖
pipenv install 创建了项目的虚拟环境,
Pipfile
Pipfile文件,source部分用来设置仓库地址,packages部分用来指定项目依赖的包,dev-packages部分用来指定开发环境需要的包,这样分开便于管理。
Pipfile.lock
而Pipfile.lock中记录了当前环境中安装的依赖的版本号以及哈希,以保证每次装出来的依赖都是一致的,注意,任何情况下都不要手动修改 Pipfile.lock 文件!
pipenv install的时候有三种逻辑:
- 如果目录下没有Pipfile和Pipfile.lock文件,表示创建一个新的虚拟环境;
- 如果有,表示使用已有的Pipfile和Pipfile.lock文件中的配置创建一个虚拟环境;
- 如果后面带诸如django这一类库名,表示为当前虚拟环境安装第三方库。
安装项目已有的所有依赖,加–dev表示包括 Pipfile 的 dev-packages 中的依赖(通常有一些Python包只在你的开发环境中需要,而不是在你的生产环境中,例如单元测试包。 Pipenv将使用–dev标志保持两个环境分开。)。
代码语言:javascript复制pipenv install --dev
安装某个库。
代码语言:javascript复制pipenv install requests
安装指定版本的库,安装时加–dev表示加入到 dev 环境。
代码语言:javascript复制pipenv install parsel==1.3.1
从项目中更新某个库
代码语言:javascript复制pipenv update requests
更新所有的库
代码语言:javascript复制pipenv update
从项目环境中删除某个库
代码语言:javascript复制pipenv uninstall requests
另外,Pipefile 和 Pipefile.lock 都会按照你的操作进行自动的更新,如果需要手动修改包的依赖条件,手工编辑 Pipefile 并进行安装即可。
打印环境中已安装的包
代码语言:javascript复制pipenv graph
能够更清晰地展示现有依赖包。
锁定版本
更新 lock 文件锁定当前环境的依赖版本
代码语言:javascript复制pipenv lock
环境变量管理
如果你开发调试时需要配一堆环境变量,可以写到.env文件中,在pipenv shell进入虚拟环境时,它会帮你把这些环境变量加载好,非常方便。
例如写一个.env文件
代码语言:javascript复制echo "test=toutiao" > .env
之后pipenv shell进入虚拟环境,echo $test就能看环境变量的值toutiao已经设置好了。
运行python命令
代码语言:javascript复制pipenv run python toutiao.py
这将使用当前虚拟环境关联的Python解释器,执行命令。
Options
Usage: pipenv [OPTIONS] COMMAND [ARGS]… Options: –update 升级 pipenv, pip 到最新. –where 输出项目的目录信息. –venv 输出 virtualenv 的目录信息. –py 输出 Python 解析器的路径. –envs 输出环境变量的设置. –rm 删除当前 virtualenv. –bare Minimal output. –completion Output completion (to be evald). –man 显示使用手册. –three / –two 使用 Python 3/2 来创建 virtualenv –python TEXT 直接指定 Python 解析器. –site-packages 拷贝系统 site-packages 到 virtualenv. –jumbotron An easter egg, effectively. –version 显示版本信息并退出. -h, –help 显示当前信息并退出. Commands: check 检查安全漏洞和反对 PEP 508 标记在Pipfile提供. graph 显示当前依赖关系图信息. install 安装提供的包,并加入 Pipfile 的依赖清单中 lock 生成 Pipfile.lock. open 在编辑器(vim)查看一个特定模块. run 在 virtualenv 中执行命令. shell 切换到 virtualenv 中. uninstall 删除提供的包,并清理 Pipfile 的依赖清单中. update 卸载当前所以依赖,然后安装最新包
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/175449.html原文链接:https://javaforall.cn