【技术应用】pipenv规范动作教程,呵呵!

举报
乔戈里峰 发表于 2018/12/20 15:55:10 2018/12/20
【摘要】 pipenv 是Kenneth Reitz大神的作品,能够有效管理Python多个环境,各种包。过去我们一般用virtualenv搭建虚拟环境,管理python版本,但是跨平台的使用不太一致,且有时候处理包之间的依赖总存在问题;过去也常常用 pip进行包的管理,pip已经足够好,但是仍然推荐pipenv,相当于virtualenv和pip的合体,且更加强大。pipenv 主要包含了Pipfi...

pipenv 是Kenneth Reitz大神的作品,能够有效管理Python多个环境,各种包。过去我们一般用virtualenv搭建虚拟环境,管理python版本,但是跨平台的使用不太一致,且有时候处理包之间的依赖总存在问题;过去也常常用 pip进行包的管理,pip已经足够好,但是仍然推荐pipenv,相当于virtualenv和pip的合体,且更加强大。

pipenv 主要包含了Pipfile、pip、click、requests和virtualenv。Pipfile和pipenv本来都是Kenneth Reitz的个人项目,后来贡献给了pypa组织。Pipfile是社区拟定的依赖管理文件,用于替代过于简陋的 requirements.txt 文件。

每门编程语言发展到现在,都需要一个工具,能够管理代码版本和控制生产环境和测试环境依赖一致的,这样减少不可代码上线之后不可控的问题出现。Php有Composer、Nodejs有npm、Golang有dep。实现方式其实大同小异,一个版本list的文件,其次是一个lock的文件,锁住并缓存当前的版本列表。Python则是Pipfile和Pipfile.lock两个文件。


接下来我们就来看看pipenv的规范操作介绍:

01 安装pipenv

pip install pipenv

pip install pipenv --user [username] 

--user 指定将pipenv安装在该用户主目录下

02 创建虚拟环境

cd project1

pipenv --three *会使用当前系统的默认Python3创建环境

pipenv --python 3.6.6 *会使用当前系统指定的Python3.6.6创建环境

pipenv install

pipenv install的时候有三种逻辑:

如果目录下没有Pipfile和Pipfile.lock文件,表示创建一个新的虚拟环境;

如果有,表示使用已有的Pipfile和Pipfile.lock文件中的配置创建一个虚拟环境;

如果后面带诸如django这一类库名,表示为当前虚拟环境安装第三方库。

03 激活虚拟环境

pipenv shell

激活后,查看解释器路径which python3,这时已经在虚拟环境了

04 退出虚拟环境

exit

05 安装和卸载第三方库

pipenv install gcp

使用pipenv创建虚拟环境后,进入pipfile所在目录,使用install命令安装第三方库

pipenv uninstall gcp

06 管理开发环境

通常有一些Python包只在你的开发环境中需要,而不是在生产环境中,例如单元测试包。 Pipenv使用--dev标志区分两个环境(开发和生产)。

pipenv install --dev django

django库现在将只在开发虚拟环境中使用。如果要在你的生产环境中使用下面命令安装已有的项目:

pipenv install

该命令执行后项目中并不会安装django包。

另外,如果开发人员将你的项目克隆到自己的开发环境中,他们可以使用--dev标志,将django也安装:

pipenv install --dev

也就是说一个--dev参数,帮你在同一个虚拟环境中又区分出了开发和非开发环境。

07 pipenv虚拟环境运行python命令

pipenv run python your_script.py

这将使用当前虚拟环境关联的Python解释器,执行命令。

08 其它辅助操作汇总

在使用pipenv之前,必须彻底的忘记pip这个东西。

新建一个准备当环境的文件夹pipenvtest,并cd进入该文件夹:

pipenv --where 显示目录信息

pipenv --venv 显示虚拟环境信息

pipenv --py 显示Python解释器信息

pipenv install requests 安装相关模块并加入到Pipfile

pipenv install django==1.11 安装固定版本模块并加入到Pipfile

pipenv install -r requirements.txt 通过requirements.txt安装包

pipenv graph 查看目前安装的库及其依赖

requests==2.18.4

  - certifi [required: >=2017.4.17, installed: 2017.11.5]

  - chardet [required: <3.1.0,>=3.0.2, installed: 3.0.4]

  - idna [required: >=2.5,<2.7, installed: 2.6]

  - urllib3 [required: >=1.21.1,<1.23, installed: 1.22]


pipenv check检查安全漏洞

Checking PEP 508 requirements…

Passed!

Checking installed package safety…

All good! 

pipenv uninstall --all 卸载全部包并从Pipfile中移除

Found 5 installed package(s), purging…

Uninstalling certifi-2017.11.5:

  Successfully uninstalled certifi-2017.11.5

Uninstalling chardet-3.0.4:

  Successfully uninstalled chardet-3.0.4

Uninstalling idna-2.6:

  Successfully uninstalled idna-2.6

Uninstalling requests-2.18.4:

  Successfully uninstalled requests-2.18.4

Uninstalling urllib3-1.22:

  Successfully uninstalled urllib3-1.22

跟上面graph命令显示的内容对应

pipenv lock 通过更新Pipfile.lock来冻结软件包名称及其版本,以及其依赖关系的列表。 这可以使用lock关键字完成的


附:pipenv执行相关参数介绍

Usage: pipenv [OPTIONS] COMMAND [ARGS]...

 Options: 

--update 更新Pipenv & pip 

--where 显示项目文件所在路径 

--venv 显示虚拟环境实际文件所在路径 

--py 显示虚拟环境Python解释器所在路径 

--envs 显示虚拟环境的选项变量 

--rm 删除虚拟环境 

--bare 最小化输出 

--completion 完整输出 

--man 显示帮助页面 

--three / --two 使用Python 3/2创建虚拟环境(注意本机已安装的Python版本) 

--python TEXT 指定某个Python版本作为虚拟环境的安装源 

--site-packages 附带安装原Python解释器中的第三方库 

--jumbotron 不知道啥玩意.... 

--version 版本信息 

-h, --help 帮助信息

Commands:

  check      检查安全漏洞

  graph      显示当前依赖关系图信息

  install    安装虚拟环境或者第三方库

  lock       锁定并生成Pipfile.lock文件

  open       在编辑器中查看一个库

  run        在虚拟环境中运行命令

  shell      进入虚拟环境

  uninstall  卸载一个库

  update     卸载当前所有的包,并安装它们的最新版本



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。