zoukankan      html  css  js  c++  java
  • 包管理神器-pipenv

    一:前言

    介绍一个包管理神器-pipenv,这个工具可以让我们在写代码、创建Python运行环境、package依赖关系以及项目合作的时候更有效率。

    在pycon2018上,Kenneth Reitz介绍的Pipenv在不久就成为了Python官方推荐的包管理工具。下面是pycon2018的链接,推荐大家看看:https://www.bilibili.com/video/av26610021/?p=1。

    二:Python包管理历史

    最初的时候,我们有了Python,但是没有干净的方法来安装软件包,早期的时候,当用户想安装包时,需要先从网上把文件下载下来,解压,然后执行Python setup.py install,就能将包安装好。

    后来有了PyPI,开发者可以把他们的包上传到上面,然后其他开发者可以从这里下载他们需要的包,然后再执行python setup.py install 进行安装,但是这样还是存在许多的问题,比如说:整个过程需要人工,不方便自动化,无法安装多个不同版本等等。

    再后来有了easy_install,当用户想要安装某个包的是否,只要执行easy_install 包名,工具就会自动把包以及依赖下载下来进行安装,这解决了无法自动化的问题,但是这种方法又带来了新的问题,只能安装,却没有方法卸载。

    到了2008年,pip出现了,还引入了requirements files的概念,可以使用户非常方便的复制Python环境。比如说安装某个包,执行pip install 包名,需要卸载,执行pip uninstall 包名,需要批量安装,执行pip install -r requirements.txt。直到现在,pip已经成为非常好用的包管理工具了。pip解决了单个环境下的包管理问题,但是如果我们需要在一台机器上开发多个项目,这多个项目用到了相同包的不同版本,这就成了非常棘手的问题了。

    为了解决这个问题,virtualenv出现了。virtualenv可以为每个项目创建一套隔离的Python环境,再使用pip进行包管理。目前pip+virtualenv是目前比较主流的Python开发流程。慢慢的这种方式也逐渐暴露出了缺点,比如pip的requirements.txt过于简单,没办法表示具体的依赖关系,需要使用两个工具(pip+virtualenv)才能完成工作。

    为了解决这两个问题pipenv登场了,它主要使用pipfile来取代之前的requirements.txt,pipfile比requirements.txt表达能力更强,默认支持两种依赖,可以将多个requirements.txt的内容合并到一起,方便管理,并且通过pipfile.lock对环境进行明确,详细的描述。pipenv可以让你无缝的使用pipfile,pipfile.lock,保证每个依赖的信息都是明确的,它提供简洁的命令操作virtualenv,并且提供很多辅助工具,比如pipenv graph,可以显示项目的完整依赖关系。

    目前Pipenv已经是Python官方推荐的工作流工具了。

    三:Pipenv实操

    目前pycharm2018.2.4版本以上已经支持pipenv了。

    首先打开命令行:输入pip install pipenv 安装pipenv库。

    然后输入:pipenv,如果有如下提示说明安装成功。

    • 接着打开pycharm创建一个项目。

    • 项目创建完成否生成一个pipfile文件,该文件默认的源是国外的,为了增加安装库的速度,我们把源改成清华源:https://pypi.tuna.tsinghua.edu.cn/simple

    下面我们打开pycharm自带的terminal来安装一个简单的模块,检测是否成功。

    在命令行输入:pipenv install requests

     

    如果出现下面提示,说明安装成功。

    如果出现如下错误,说明项目名称包含中文名。

    至此,基本的pipenv环境就搭建好了。

    四:pipenv命令详解

    pip install --user --upgrade pipenv # 用户安装pipenv 
    pipenv --three # 会使用当前系统的Python3创建环境
    pipenv --two # 使用python2创建
    pipenv --python 3.6 指定某一Python版本创建环境
    pipenv run python 文件名 pipenv run pip ...# 运行pip
    pipenv shell 激活虚拟环境
    pipenv --where 显示目录信息
    pipenv --venv 显示虚拟环境信息
    pipenv --py 显示Python解释器信息
    pipenv install requests 安装相关模块并加入到Pipfile
    pipenv install django==1.11 安装固定版本模块并加入到Pipfile
    pipenv graph # 显示依赖图
    pipenv check #检查安全漏洞
    pipenv lock # 生成lockfile
    pipenv update # 更新所有的包
    pipenv --rm # 删除虚拟环境
    pipenv uninstall requests # 卸载包并从Pipfile中移除
    pipenv uninstall --all # 卸载全部包
  • 相关阅读:
    JS LeetCode 1423. 可获得的最大点数简单题解
    SpringBoot 学集 (第六章) Docker
    Linux 学记 (第三章)
    Linux 学记 (第二章)
    Linux 学记 (第一章)
    SpringBoot 学集 (第五章) Web开发续
    SpringBoot 学集 (第四章)Web开发
    SpringBoot 学集 (第三章) 日志框架
    SpringBoot 学集 (第二章) 配置文件
    SpringBoot 学集 (第一章)
  • 原文地址:https://www.cnblogs.com/felixwang2/p/9770519.html
Copyright © 2011-2022 走看看