pipenv都包含什么?
pipenv 是 Pipfile 主要倡导者、requests 作者 Kenneth Reitz 写的一个命令行工具,主要包含了Pipfile、pip、click、requests和virtualenv。Pipfile和pipenv本来都是Kenneth Reitz的个人项目,后来贡献给了pypa组织。Pipfile是社区拟定的依赖管理文件,用于替代过于简陋的 requirements.txt 文件。
Pipfile的基本理念是:
Pipfile 文件是 TOML 格式而不是 requirements.txt 这样的纯文本。
一个项目对应一个 Pipfile,支持开发环境与正式环境区分。默认提供 default 和 development 区分。 提供版本锁支持,存为 Pipfile.lock。 click是Flask作者 Armin Ronacher 写的命令行库,现在Flask已经集成了它。
关于虚拟环境
作为python的开发者,在真正的开发需求完成并测试好之后,自然需要发布到正式的服务器,此时就会面临环境问题,假设服务器是一台全新的没有任何python第三方模块包,自然没有版本约束会好一点,但是那么包,也不一定全部记得,一个个手动安装始终是不现实的;再假设服务器是以前装好的,自然安装包之间会有版本问题,本机就算测试再好,在版本问题面前也都是白费。所以,需要一个虚拟的环境,在这个虚拟环境里面模拟出一个跟服务器一模一样的环境出来。
此篇blog的篇幅主要放在讲解,以pipenv命令来建立虚拟环境,所以就不在讲解之前提到的其他可以使用的其他命令的虚拟环境搭建。
搭建虚拟环境
此处楼主以一个明确的新项目需求来一步步解释一下如何使用。
1、明确项目的目录并创建
2、进入项目并使用创建虚拟环境
如上,虚拟环境就创建好了,当然也可以使用指定版本的python来创建虚拟环境
pipenv --three 会使用当前系统的Python3创建环境pipenv --python 3.6 指定某一Python版本创建环境pipenv shell 激活虚拟环境pipenv --where 显示目录信息/Users/dandyzhang/pipenv_testpipenv --venv 显示虚拟环境信息/Users/dandyzhang/.local/share/virtualenvs/pipenv_test-xlDg6jo5pipenv --py 显示Python解释器信息/Users/dandyzhang/.local/share/virtualenvs/pipenv_test-xlDg6jo5/bin/python
此时,可以发现路径下多了两个文件
这就是上面解释的环境配置文件。
创建Django项目
此时既然需要创建django项目,需要安装django包
查看一下pipfile文件
这里面的版本的*表示最新的版本吧
当然也可以安装指定版本的模块包:
pipenv install django==1.11 安装固定版本模块并加入到Pipfilepipenv graph 查看目前安装的库及其依赖
如果安装指定的版本的模块,
再查看一下pipfile
发现当指定安装版本的时候,模块的版本就会被记录再pipfile中,当然是没有版本要求,可以随意安装好之后再检查版本,一个个添加进去,问题不大。最正式的当然是安装的时候带着版本,一了百了。
创建Django项目
django-admin startproject django_test
进入项目内部创建app
使用tree命令会更清晰一点
此时如果在命令行的话,就可以启动虚拟环境了
利用Pycharm开发
当然了,在命令行使用pipenv的虚拟环境做肯定是一件很无语的体验,可以让它跟开发工具pycharm完美契合
首先打开此项目在pycharm里面
上面已经提过如何用命令获取虚拟环境路径
先将此虚拟环境添加进pycharm
选择添加:
选择已经存在的虚拟环境,粘贴刚刚的虚拟环境路径到输入框,选择bin里面的python或python3.6,点击确定,此时把虚拟环境添加到pycharm里面了。
多的模块包是基础包或者依赖包,可以通过命令
pipenv graph 查看目前安装的库及其依赖
最后编辑项目的配置选择此虚拟环境解析器就好了。
选择并应用
并且pycharm里面的python console也是依赖虚拟环境的,很方便。
补充
这里再补充一点没有讲到的点。
如何模拟创建之前利用其他工具创建好的虚拟环境
首先打开之前的项目,将之前项目的虚拟环境导出到requirements.txt文件
pip freeze > requirements.txt
将requirements.txt文件粘贴到到要创建环境的目录,执行命令
pipenv install -r requirements.txt
就完美创建虚拟环境了。
如何卸载某个包
pipfile文件内的也会被删除。
删除所有软件包
可以发现pipfile没有更改。
最后的最后打印一下pipenv的命令说明给大家看一下,可以从这边获取更多的帮助。