• Python包管理工具之pipenv


    微信公众号:运维开发故事,作者:姜总

    前言

    传统的成熟方案中,我们为了避免包版本的管理混乱,通常我们是依赖于当前的Python版本创建一个虚拟环境,并在虚拟环境中使用pip进行包管理。现在有一个好用的工具叫pipenv来帮助我们更方便的管理包。

    一、pipenv是什么以及它有什么作用?

    pipenv是一个Python的包管理工具。它是requests作者Kenneth Reitz的作品,提供Python的各个版本间的管理,各种包管理。当你开始熟悉并且使用它的时候,你就知道它有点类似于前端的npm和yarn的味道。

    它能自动为项目创建和管理虚拟环境。当你使用pipenv的时候,他会在项目根目录下创建Pipfile,用于记录包的版本信息。当你使用pipenv来安装包的时候,它会在项目根目录生成Pipfile.lock文件来锁定安装包的版本和依赖信息,避免构建错误。

    它主要解决了以下几个问题:

    • 不需要基于当前的Python解释器版本单独的创建使用virtualenv和pip工具。

    • 无序维护requirements.txt文件,使用Pipfile和Pipfile.lock来代替

    基本概念:

    • 在一个新的项目根目录下执行 pipenv install,则他会自动创建一个虚拟环境,并且生成一个Pipfile文件

    • 当 install 命令没有传递参数指定安装包,如果当前存在Pipfile,则会自动安装所有Pipfile中的[packages]中的包

    二、安装pipenv

    # MacOS下
    pip install pipenv
    # shell命令补全
    echo 'eval "$(pipenv --completion)"' >> ~/.zshrc
    
    # Centos7下步骤一样,只需要将~/.zshrc改成 /etc/profile或者其他环境变量文件即可
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    三、pipenv优缺点

    优点:

    • 自动关联项目相关的 virtualenv,能够快速的加载 virtualenv 。

    • 提供的pipenv替代pip并自带一个依赖清单Pipfile,和依赖锁定Pipfile.lock。

    • Pipfile除了依赖清单还支持固定pypi源地址,固定python版本。

    • Pipfile还支持dev依赖清单.pipenv install的包会强制使用Pipfile中的源.

    • 使用pipenv graph命令可以看到依赖树。

    • 可以直接切换python2和python3。

    缺点:

    • Windows下命令行终端开头没有没有venv的名称,让你不知道是否在虚拟环境中,容易误操作

    • 永久设置了Pipfile文件中的源以后,Pipfile文件中看到的还是官方源,但是实际上是已经走了你设置的源了。

    四、使用pipenv

    创建pipenv虚拟环境

    # 创建项目目录
    mkdir project1
    cd project1
    
    # 可以指定Python版本来创建虚拟环境
    pipenv --python 3.10.4
    
    # 由于项目是新建的,所以会自动生成Pipfile和Pipfile.lock文件
    pipenv install
    
    # 不进入虚拟环境执行命令,默认只有以下这几个包,和用virtualenv中时一样的
    $ pipenv run pip list
    Package    Version
    ---------- -------
    pip        21.3.1
    setuptools 59.6.0
    wheel      0.37.1
    
    # 激活虚拟环境
    pipenv shell
    
    # 安装包
    pipenv install requests
    
    # 查看包的依赖关系
    pipenv graph
    
    # 升级某一个包
    pipenv update requests
    
    # 退出虚拟环境
    exit
    
    # 删除虚拟环境。删除虚拟环境不会删除项目目录,只是删除虚拟环境的目录
    pipenv --rm
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    五、团队共享

    如果现在在团队中共享你的项目,比如人员A需要你的项目,他下载项目到本地了,那么运行项目首先安装依赖包,那依赖包怎么解决呢?

    mkdir project2
    cd project2
    # 然后拷贝Pipfile和Pipfile.lock文件到这个目录下,执行以下命令
    pipenv install
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这样就安装了所有你项目需要的依赖包了

    六、PyCharm中怎么使用Pipenv

    首先设置一下你的环境变量

    vi ~/.zshrc
    # python pipenv
    export PATH="$PATH:/Users/allenjol/.local/" >> ~/.zshrc
    source ~/.zshrc
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    打开pycharm,创建一个项目,New environment using选择Pipenv,创建完成后就进入了Pipenv的环境了。

    公众号:运维开发故事

    github:https://github.com/orgs/sunsharing-note/dashboard

    爱生活,爱运维

    如果你觉得文章还不错,就请点击右上角选择发送给朋友或者转发到朋友圈。您的支持和鼓励是我最大的动力。喜欢就请关注我吧~

    图片

  • 相关阅读:
    Ansible的role
    java版工程管理系统Spring Cloud+Spring Boot+Mybatis实现工程管理系统源码
    AIR32F103(五) FreeRTOSv202112核心库的集成和示例代码
    std::c++ 中格式化任意字符串
    Next.js 热更新 Markdown 文件变更
    Vue-DPlayer详细使用(包含遇到坑)
    C语言——如何写出好的代码?
    ARCGIS 横向图例是怎么做的?
    设计模式 --- 工厂模式
    KMP中的BuildConfig
  • 原文地址:https://blog.csdn.net/wanger5354/article/details/125563088