• Pipenv


    pipenv简介

    过去我们一般用 virtualenv搭建虚拟环境,管理python版本,用 pip进行包的管理。

    在虚拟环境激活状态下,可以安装所需的依赖包,安装的依赖包会保存至项目虚拟环境目录下,不会污染系统全局环境

    virtualenv的使用存在一定的问题:

    • 由于跨平台的使用不太一致,有时候处理包之间的依赖总存在问题。
    • 可能需要手动安装/删除某些特定版本的包
    • 存在多个环境(开发环境、测试环境、生产环境)时,依赖包目录文件requirements.txt 会需要存在多个,无比繁琐
    • 要定期更新 requirements.txt,保持项目环境的一致性

    pipenv能够有效管理Python多个环境,各种包,相当于 virtualenv 和 pip 的合体,且更加强大。

    pipenv主要有以下特性:

    • pipenv集成了pipvirtualenv两者的功能,且完善了两者的一些缺陷。

    • pipenv会在项目目录下创建 Pipfile Pipfile.lock 文件,管理包之间的依赖关系。

      virtualenv需要将虚拟环境依赖包的导出为requirements.txt, 一旦依赖包变动,就要重新导出,现在PipfilePipfile.lock文件可以节省这些步骤,更方便地管理,查看依赖关系是十分方便。

    • 各个地方使用了哈希校验,无论安装还是卸载包都十分安全,且会自动公开安全漏洞。。

    • 通过加载 .env文件简化开发工作流程。

    • 便于docker容器化管理Pipfile文件支持生成 requirements文件,便于项目代码docker化管理,另外,pipfile还支持v–dev环境,可以在调试阶段安装许多调试工具等,而不影响生产环境的环境。

    • 无需激活虚拟环境执行代码,只要有pipfile文件即可使用虚拟环境的依赖包执行python脚本,如:通过执行命令 pipenv run python xx.py

    • 支持Python2 和 Python3,在各个平台的命令都是一样的。

    下面快速介绍pipenv的基本使用,本文的使用的是windows下的Python3.7,对于其他平台同样适用。

    pipenv安装

    快捷键Win+R,输入cmd打开黑屏终端,输入代码

    pip3 install pipenv
    
    • 1

    检测是否安装成功

    pipenv --version
    
    • 1

    查看帮助指令

    pipenv --help
    
    • 1

    创建虚拟环境

    使用命令pipenv install,可在当前目录下创建 PipfilePipfile.lock 文件,在虚拟环境目录下新增一个虚拟环境

    Pipfile文件: 用于保存项目的python版本、依赖包等相关信息 。

    [[source]]
    url = "https://pypi.tuna.tsinghua.edu.cn/simple"
    verify_ssl = true
    name = "pypi"
    
    [packages]
    requests = "*"
    pyyaml = "*"
    Django = "*"
    
    [dev-packages]
    pytest = "*"
    
    [requires]
    python_version = "3.7"
    
    [scripts]
    django = "python manage.py runserver 0.0.0.0:8080"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • source 用来设置仓库地址,即指定镜像源下载虚拟环境所需要的包

    • packages 用来指定项目依赖的包,可以用于生产环境和生成requirements文件

    • dev-packages 用来指定开发环境需要的包,这类包只用于开发过程,不用与生产环境。

    • requires 指定目标Python版本

    • scripts 添加自定义的脚本命令,并通过 pipenv run + 名称 的方式在虚拟环境中执行对应的命令 。

      pipenv run django 相当于 执行命令 pipenv run python manage.py runserver 0.0.0.0:8080

    Pipfile 文件可以复制到其他项目内,通过执行pipenv install命令, 根据这个 Pipfile 文件生成虚拟环境和依赖包的安装

    Pipfile.lock文件: 通过hash算法将包的名称和版本,及依赖关系生成哈希值,保证包的完整性,除修改镜像源,非必要情况不对该文件进行修改。

    默认路径存放虚拟环境

    进入F盘下的 Project目录下,使用mkdir命令新增一个 Pro1文件夹,执行pipenv install命令

    在这里插入图片描述

    提示虚拟环境创建成功,进入F盘下的 Project/ Pro1目录下,可以发现该文件夹下新增了 PipfilePipfile.lock 文件

    而虚拟环境创建的目录,则是位于C盘下,进入C:\Users\bobo\.virtualenvs目录下,可以发现目录下新增了一个 Pro1-sCuF4Q6F,该文件夹中的内容则是F盘 Project目录下Pro1项目对应的虚拟环境

    指定目录存放虚拟环境

    如果不想将虚拟环境的安装目录放到C盘,也可以指定目录存放

    鼠标右击桌面此电脑,点击属性,点开高级系统设置,点击环境变量

    在这里插入图片描述

    新增一个环境变量,可以选择用户变量,也可以选择系统变量

    在这里插入图片描述

    变量名为WORKON_HOME,变量值则为虚拟环境的安装目录。(注意:新增后一定要一步步点击确定来关闭弹框,否则没有保存成功,会导致没有生效)

    新打开一个黑屏终端界面,进入F盘下的 Project目录下,使用mkdir命令新增一个 Pro2文件夹,执行pipenv install命令

    在这里插入图片描述

    可以看到,Pro2项目对应的虚拟环境的安装目录,变成了F:\Envs\Pro2-lXQWMpIi

    指定python版本创建虚拟环境

    使用命令pipenv install --python +版本号,可指定python版本创建虚拟环境

    博主本地python默认的是3.7版本,但还安装了python3.10版本
    在这里插入图片描述

    指定3.10版本进行安装,pipenv会自动去寻找python安装的目录,然后根据python.exe文件去创建虚拟环境

    Windows系统下,基本安装的都是 python3.x版本;而有些Linux系统自带 python2.x 和 python3.x版本,Linux下需要指定默认的python版本,需使用下方的命令:

    pipenv install --two           创建指定python2.x版本的虚拟环境
    pipenv install --three         创建指定python3.x版本的虚拟环境
    
    • 1
    • 2

    安装第三方库

    pipenv兼容pip命令,同样使用 pipenv install + 包名的方式安装第三方库

    使用pycharm打开 Pro2文件夹,可以发现默认加载了Pro2对应的虚拟环境

    新建一个demo文件,此时Pro2对应的虚拟环境并没有安装 requests库,所以这里报错了

    在这里插入图片描述

    在pycharm的 Terminal终端输入命令

    pipenv install requests
    
    • 1

    安装成功后,代码里就不会再报错了

    若需要指定版本按钮,在命令尾部加上包的版本即可

    pipenv install requests==2.31
    
    • 1

    修改镜像源

    如果官方源站安装第三方库的速度很慢,安装失败,可以修改镜像源

    pipenv兼容pip命令,所以也可以在命令加上参数

    pipenv install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
    
    • 1

    若想要永久该虚拟环境的镜像源,则需要打开项目目录下的PipfilePipfile.lock 文件,将sourceurl = "https://pypi.org/simple"链接内容修改为需要的镜像源,例如修改为清华的镜像源url = "https://pypi.tuna.tsinghua.edu.cn/simple"

    安装到dev环境

    安装调试工具、性能测试工具、python语法工具,这些内容仅在本地环境有用,生产环境不需要这些。

    比如单元测试相关的包unittestpytest,只在开发阶段有用,为了和生产环境的包区分开来,可以通过命令 pipenv install --dev + 包名将其归类到【dev-packages】下。

    例如安装pytest到开发环境

    pipenv install --dev pytest
    
    • 1

    pipenv命令

    pipenv兼容大部分的pip命令,所以 pip命令能实现的内容,也能通过pipenv命令实现

    卸载命令

    pipenv uninstall requests 			在项目所在虚拟环境中卸载requests包,并在Pipfile文件移除包名
    pipenv uninstall --all 				在项目所在虚拟环境中卸载所有包,并在Pipfile文件移除包名
    pipenv uninstall --all --dev		在项目所在虚拟环境中卸载所有dev环境的包,并在Pipfile文件移除[dev-packages]中的所有包名
    
    • 1
    • 2
    • 3

    更新命令

    pipenv update requests 			在项目所在虚拟环境中更新requests包,并在Pipfile.lock文件中更新相应版本信息
    pipenv update 	 				在项目所在虚拟环境中更新所有包,并在Pipfile.lock文件中更新相应版本信息
    pipenv update --outdated		在项目所在虚拟环境中查看已过期的包的信息
    pipenv lock						根据项目所在虚拟环境的Pipfile文件生成/更新Pipfile.lock文件中的依赖包信息
    
    • 1
    • 2
    • 3
    • 4

    查看命令

    pipenv --where			查看项目位置
    pipenv --venv			查看虚拟环境位置
    pipenv --py				查看虚拟环境python解释器位置
    pipenv graph			查看依赖包信息
    
    • 1
    • 2
    • 3
    • 4

    激活与退出虚拟环境

    使用pipenv install 命令创建虚拟环境时,创建成功会默认激活虚拟环境

    若想退出虚拟环境,可输入 exit 退出(仅适用于黑屏终端,pycharm默认打开项目就加载了虚拟环境,只能修改指定的虚拟环境)

    目录下存在 PipfilePipfile.lock 文件,已创建过虚拟环境,可通过命令 pipenv shell进行激活

    删除虚拟环境

    快捷键Win+R,输入cmd打开黑屏终端,输入代码

    pipenv --rm
    
    • 1

    注意:该命令无法在pycharm的Terminal终端执行成功,使用pycharm打开项目时,默认激活了项目下的虚拟环境,而使用exit命令退出虚拟环境,pycharm会关闭当前的Terminal终端

    删除虚拟环境后,如果目录下仍存在 PipfilePipfile.lock 文件,可以通过pipenv install重新进行安装虚拟环境,且重新安装的虚拟环境,名称与删除前一致

    运行python代码

    虚拟环境已激活

    在虚拟环境已激活的情况下,可直接执行python代码,例如执行demo文件中的 test.py 文件

    python test.py
    
    • 1

    控制台会返回post请求的结果

    再比如运行Django项目

    python manage.py runserver 0.0.0.0:8080
    
    • 1

    此时,在浏览器中输入url http://127.0.0.1:8080/,可以看到项目已启动

    虚拟环境未激活

    不进入虚拟环境的情况下,也可以通过pipenv命令使用虚拟环境运行代码,使用pipenv run python xxx.py命令,执行python文件

    pipenv run python test.py
    
    • 1

    黑屏终端返回post请求的结果

    再比如运行Django项目( scripts中已添加自定义的脚本命令)

    python run django
    
    • 1

    此时,在浏览器中输入url http://127.0.0.1:8080/,可以看到项目已启动

    在这里插入图片描述

    requirements.txt 文件

    pipenv可以像virtualenv一样使用命令生成requirements.txt文件

    pipenv lock -r --dev >requirement.txt
    
    • 1

    命令中的--dev并不是说把 Pipfile文件中 [dev-packages]下的包导出,而是把所有依赖包导出。

    pipenv还可以通过requirements.txt文件 安装依赖包

    pipenv install -r requirement.txt
    
    • 1
  • 相关阅读:
    R语言plotly可视化:plotly可视化二维直方图等高线图(Basic 2D Histogram Contour)
    [Windows 10]Qt5.14.2下安卓开发环境配置
    金融信创与云化转型|证券超融合架构转型与场景探索合集
    数据结构代码题--头插法和尾插法的应用
    vue3学习笔记--1.
    【git系列3/4】仓库(GitHub)上的项目的文件是什么换行符?同一个文件可以有不同换行符吗?
    行业洞察 | 新零售业态下,品牌电商应如何重塑增长?
    2023最新SSM计算机毕业设计选题大全(附源码+LW)之java教学信息管理辅助系统jszpb
    DRF-项目-(1):构建纯净版的drf项目,不再使用django的后台管理,django的认证,django的session等功能,作为一个纯接口项目
    Apache APISIX 的 Admin API 默认访问令牌漏洞(CVE-2020-13945)漏洞复现
  • 原文地址:https://blog.csdn.net/qq_44614026/article/details/126064163