大家好,今天给大家介绍的开源项目是一款Python虚拟环境管理工具,Pipenv是Python官方推荐的包管理工具。可以说它集成了virtualenv、pip和pyenv的功能。它的目的是结合所有包管理工具的长处,例如:npm、yarn、composer等。Pipenv试图解决的问题是多方面的:我们不需要手动创建虚拟环境,Pipenv会自动创建它对我们来说,会在特定位置创建一个virtualenv环境,然后调用pipenvshell命令切换到虚拟环境。使用requirements.txt可能会出现一些问题,所以Pipenv改用Pipfile和Pipfile.lock,如果Pipfile不存在会自动创建,安装、升级、删除依赖包时会自动更新Pipfile和Pipfile.lock文件。哈希值无处不在。安全。自动披露安全漏洞。让您深入了解依赖关系图(例如$pipenv图)。随时查看图形依赖关系。自动加载.env读取环境变量,简化开发流程。安装PipenvMacOS$brewinstallpipenvDebian$sudoaptinstallpipenvFedora$sudodnfinstallpipenv如果你的电脑有多个Python版本,可以指定安装的Python版本$python3-mpipinstallpipenv常用命令$pipenvUsage:pipenv[OPTIONS]COMMAND[ARGS]...Options:--where显示工程文件的路径--venv显示虚拟环境中实际文件的路径--py显示虚拟环境Python解释器的路径--envs显示虚拟环境选项变量--rm删除虚拟环境环境--bare最小化输出--completion完整输出--man显示帮助页面--three/--two使用Python3/2创建虚拟环境(注意安装的Python版本)--pythonTEXT指定某个Python版本作为虚拟环境的安装源--site-packages自带第三方库安装在原始Python解释器中--jumbotron一个复活节彩蛋,有效。--version版本信息-h,--helphelpinformation命令参数命令:check检查安全漏洞图显示当前依赖图信息install安装虚拟环境或第三方库锁锁定并生成Pipfile.lock文件open查看编辑器中的库运行在虚拟环境中运行命令外壳输入虚拟环境卸载卸载库更新卸载所有当前包并安装它们的最新版本。基本上,我们可以创建一个名为PipenvTest的项目,然后创建一个新的Python脚本,例如名为tst_env.py,内容为:importdjangoprint(django.get_version())结果如下:1.12可以看到系统安装的Django版本是1.12但是我们希望这个项目基于Django2.x开发,当然我们可以选择使用系统的Django版本进行升级,但这可能会影响其他项目的运行,所以这不是一个好的选择。为了不影响Django版本的系统环境,我们可以使用Pipenv创建一个虚拟环境。在该目录下,输入pipenv命令即可查看命令的完整使用方法:用法:pipenv[OPTIONS]COMMAND[ARGS]...选项:--updateUpdatePipenv&piptolatest。--where输出项目主页信息。--venv输出虚拟环境信息。--py输出Python解释器信息。--envs输出环境变量选项。--rm删除虚拟环境。--bare最小输出。--completion输出完成(待评估)。--man显示联机帮助页。--three/--two在创建virtualenv时使用Python3/2。--pythonTEXT指定应该使用哪个版本的Pythonvirtualenv。--site-packages为virtualenv启用站点包。--jumbotron一个复活节彩蛋,有效。--version显示版本并退出。-h,--help显示此消息并退出。使用示例:使用Python3.6创建一个新项目,具体为:$pipenv--python3.6Installalldependenciesfor一个项目(包括开发):$pipenvinstall--dev创建一个包含预发布的锁定文件:$pipenvlock--pre显示已安装依赖项的图表:$pipenvgraph检查已安装的依赖项是否存在安全漏洞:$pipenvcheckInstall本地setup.py到您的虚拟环境/Pipfile:$pipenvinstall-e.Commands:check检查安全漏洞和Pipfile中提供的PEP508标记。graph显示当前安装的依赖关系图信息。install安装提供的包并将它们添加到Pipfile,或者(如果没有给出)安装所有包。锁生成Pipfile.lock。在编辑器中打开查看给定模块。运行生成安装到virtualenv中的命令。shell在vi??rtualenv中生成一个shell。uninstall卸载提供的包并将其从Pipfile中删除。update全部卸载包,并将[packages]中的包重新安装到最新的兼容版本。创建虚拟环境的第一步是验证当前项目没有创建虚拟环境。调用如下命令:$pipenv--venv结果如下:还没有为这个项目创建virtualenv!中止!这说明当前项目还没有创建虚拟环境。接下来我们使用Pipenv创建虚拟环境:$pipenv--three或者$pipenvinstall--python3.6创建Python3虚拟环境,--three表示创建Python3版本的虚拟环境,--python可以指定一个具体的Python版本,当然如果指定了--two或者--three选项参数,会使用python2或者python3的版本安装,否则会使用默认的python版本安装但是前提是你的系统有这个版本的已安装Python。当然你也可以指定准确的版本信息:$pipenvinstall--python3$pipenvinstall--python3.6$pipenvinstall--python2.7.14pipenv会自动扫描系统寻找合适的版本信息,如果没有找到,并且同时如果安装了pyenv,会自动调用pyenv下载对应版本的python,否则会报错。此时会在当前new_env环境下生成两个环境初始化文件Pipfile和Pipfile.lock。接下来我们可以切换到虚拟环境执行命令,只需要执行如下命令:$pipenvshell使用Pipenv安装第三方包$pipenvinstallurllib3此时Pipfile中包含了最新安装包的信息文件,如名称,版本等。当重新安装项目依赖或与他人共享项目时,您可以使用Pipfile来跟踪项目依赖项。pipfile用于替换原来的requirements.txt,内容类似如下。source部分用于设置仓库地址,packages部分用于指定项目依赖的包,dev-packages部分用于指定开发环境需要的包,便于单独管理.$catPipfile[[source]]url="https://pypi.org/simple"verify_ssl=truename="pypi"[packages]"urllib3"="*"[dev-packages][requires]python_version="3.6"pipfile.lock包含了你的系统信息,所有安装包的依赖及其版本信息,所有安装包及其依赖的Hash校验信息。$Pipfile.lock{"_meta":{"hash":{"sha256":"af58f3510cb613d4d9241128f9a0ceb9bb936ad907543e23ad8317011dcb6715"},"pipfile-spec":6,"requires":{"python_version":"3.6"[{},"sources"name":"pypi","url":"https://pypi.org/simple","verify_ssl":true}]},"default":{"urllib3":{"hashes":["sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf","sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5"],"index":"pypi","version":"==1.23"}},"develop":{}}那么到这里有小伙伴可能就会问Now,Pipfile和Pipfile.lock有什么用?Pipfile其实是一个TOML格式的文件,标识了项目依赖包的基本信息,同时也区分了生产环境和开发环境的包标识,类似于requirements.txt文件在功能上,反而更加强大。pipfile.lock详细标识了项目安装包的确切版本信息,最新可用的版本信息,以及当前库文件的哈希值。顾名思义,它充当版本锁。您可以注意到当前的Pipfile.lock文件。Django版本标识为==2.0.2,也就是说我们目前使用的是2.0.2版本进行开发,可以起到版本锁的作用。比如我们刚刚安装的Django2.0.2版本,也就是最新版本(2018.2.27)。不过以后说不定Django会更新。比如有一天Django更新到2.1版本。这时候如果我们想把这个项目重新部署到另外一台机器上,如果此时没有Pipfile.lock文件,只有Pipfile文件存在。由于Pipfile文件中标识的Django依赖为django="*",即没有版本限制,所以默认会安装最新版本的Django,即2.1,但是由于Pipfile.lock的存在文件,会根据Pipfile.lock进行安装,仍然会安装Django2.0.2,避免部分库版本更新导致的不兼容问题。切记:在任何情况下都不应手动修改Pipfile.lock文件!常用命令我们可以使用--venv参数获取虚拟环境路径:$pipenv--venv/Users/kennethreitz/.local/share/virtualenvs/test-Skyy4vre项目路径$pipenv--where/Users/kennethreitz/Library/MobileDocuments/com~apple~CloudDocs/repos/kr/pipenv/test找到Python解释器:$pipenv--py/Users/kennethreitz/.local/share/virtualenvs/test-Skyy4vre/bin/python安装指定的package:$pipenvinstallurllib3==1.22**开发环境安装包:通常有一些Python包是你的开发环境只需要,生产环境不需要,比如单元测试包。Pipenv使用--dev标志来区分这两种环境。添加--dev以将依赖项包含在Pipfile的开发包中。**$pipenvinstalldjango--devInstallingpytest...将pytest添加到Pipfile的[dev-packages]...django库现在将仅用于开发虚拟环境。如果您在生产环境中安装项目:pipenvinstall这不会安装django包。但是,如果开发人员将您的项目克隆到他们自己的开发环境中,他们可以使用--dev标志来同时安装django:pipenvinstall--dev表示一个--dev参数来帮助您在相同的虚拟环境中区分开发和非开发环境。显示依赖关系图:$pipenvgraphrequests==2.18.4-certifi[要求:>=2017.4.17,安装:2017.7.27.1]-chardet[要求:>=3.0.2,<3.1.0,安装:3.0。4]-idna[required:>=2.5,<2.7,installed:2.6]-urllib3[required:<1.23,>=1.21.1,installed:1.22]生成锁文件:$pipenvlockAssuringPipfile中的所有依赖项都已安装...锁定[dev-packages]依赖项...锁定[packages]依赖项...注意:您的项目现在仅安装了默认[packages]。要安装[dev-packages],请运行:$pipenvinstall--dev卸载第三方包:$pipenvuninstallurllib3or$pipenvuninstall--allupdateinstallationpackages$pipenvupdateurllib3$pipenvupdate#updateallinstallationpackages**检查包的完整性你担心安装包的安全性吗漏洞?没关系,pipenv可以帮你检查,运行以下命令:**$pipenvcheckCheckingPEP508requirements...Passed!检查已安装包的安全性......一切都很好!生成Pipfile.lock有时Pipfile.lock文件可能不存在或者已经被删除,这时候我们可以使用如下命令来生成:$pipenvlock以上是一些常用的Pipenv命令。如果想看更多用法,可以参考其官方文档:https://docs.pipenv.org/#pipe....修改下载源Pipenv如果在使用pipenvinstall安装过程中感觉下载速度慢,可以参考下载源:[[source]]name="pypi"url="https://pypi.tuna。tsinghua.edu.cn/simple/"verify_ssl=true[dev-packages][packages]requests="*"paho-mqtt="*"pymongo="*"can="*"crypto="*"gvent="*"gevent="*"[requires]python_version="3.7"只需要修改Pipfile即可。pip下载源阿里:http://mirrors.aliyun.com/pypi/simple/豆瓣:http://pypi.douban.com/simple/清华:https://pypi.tuna.tsinghua.edu.cn/simplePyCharm配置Pipenv以添加Python解释器。选择Pipenv虚拟环境Base解释器作为本地系统中的python解释器路径。Pipenv可执行文件表示pipenv。命令的环境变量路径选择项目下新建的Pipenv名称。项目地址:https://github.com/pypa/pipenv喜欢今天的推荐吗?如果喜欢,请在文章底部留言或点赞,表示对我的支持。您的评论、点赞、转发和关注是我持续更新的动力!关注我的公众号回复:“1024”,免费领取海量学习资源,先到先得!
