当前位置: 首页 > news >正文

【pipenv】—— 虚拟环境管理工具近乎全面的总结

  1. 安装

    pip install pipenv

  2. 使用和配置

    • 设置虚拟环境文件创建在项目根目录

      添加环境变量:WORKON_HOME​=PIPENV_VENV_IN_PROJECT

    • 创建虚拟环境时,自动换用指定的pip源

    • 添加环境变量:PIPENV_TEST_INDEX​=https://pypi.tuna.tsinghua.edu.cn/simple

  3. Mac上

    export WORKON_HOME=PIPENV_VENV_IN_PROJECT
    export PIPENV_TEST_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple
    
  4. 基本使用

    • 首次创建虚拟环境,并指定python版本

      pipenv --python 3.18
      
    • 删除虚拟环境,在项目根目录下

      pipenv --rm
      
    • 激活虚拟环境

      pipenv shell
      

      若在powershell中

      pipenv powershell
      
    • 退出虚拟环境

      • 直接在虚拟环境命令行输入

        deactivate
        
    • 安装依赖

      pipenv install -r requirements.txt
      
  5. 进阶操作

    • 根据已有的pipenv虚拟环境文件,重建虚拟环境

      cd到Pipfile.lock​所在目录

      pipenv sync
      
    • 另一个相似命令参数:--deploy

      pipenv install --deploy
      

      这个命令同样会安装或更新依赖,使其与Pipfile.lock​匹配,但它具有额外的校验逻辑

      • 发现当前环境中存在Pipfile.lock​未记录的包,或者已安装包的版本与锁定文件不匹配,该命令会报错并阻止安装,而不是尝试去修复或更新这些差异
      • 要用于部署阶段,作为一个安全网来防止未经预期的依赖变化影响到生产环境。它确保部署过程不会因为依赖不匹配而引入潜在的错误
    • 安装特定版本包到虚拟环境

      pipenv install numpy==1.18.5
      
    • 对于只在开发过程中才需要的包的安装(如:测试框架、文档生成工具等),使用--dev​参数

      pipenv install --dev pytest
      
    • 查看当前环境中已经安装的包和版本

      pipenv lock -r
      
  6. Pipfile 和 pipefile.lock

    • Pipefile

      • 作用: Pipfile​ 是 pipenv​ 用来存储项目直接依赖和开发依赖的文件,它替代了传统的 requirements.txt​ 文件。
      • 内容: 包含了项目所需的Python包及其版本范围(允许的版本号范围),还可以指定环境变量、索引URL等元数据。通过 pipenv install <package>​ 命令添加依赖时,pipenv​ 会自动维护这个文件,记录下包名和其兼容的版本范围。
      • 优点: 相比于固定版本号,版本范围能更好地处理包之间的兼容性问题,同时也便于升级和维护。
    • Pipfile.lock

      • 作用: Pipfile.lock​ 则是一个更详细的依赖描述文件,它锁定了每个依赖的具体版本号,包括直接依赖和这些依赖的间接依赖(也就是所有的子依赖)。
      • 生成与更新: 通过运行 pipenv lock​ 命令生成或更新,这个命令会根据 Pipfile​ 中的依赖关系和版本约束,确定一个确切的依赖版本集合,并记录在 Pipfile.lock​ 中。
      • 目的: 确保项目在不同环境下的依赖安装结果一致,这对于团队开发、持续集成(CI)和持续部署(CD)尤其重要,因为这可以避免“在我机器上能跑”的问题,保证所有环境下的依赖都是相同的。
      • 优点: 提供了一种可复现的依赖管理方式,确保了项目的可移植性和稳定性。
    • 总结

      • Pipfile​ 更偏向于开发时的灵活管理,而 Pipfile.lock​ 则是在部署和团队协作时保证环境一致性的重要工具。
      • 在开发过程中频繁变动的是 Pipfile​,而 Pipfile.lock​ 应该在每次准备部署或分享代码之前更新,以确保依赖的精确复现
  7. Tips

    • 在激活的pipenv内使用pip install​安装的包不会记录到pipenv的相关文件中,也就对该包失去管理
    • 所以,强烈推荐在使用pipenv相关的虚拟环境时,包的安装和卸载都是用pipenv install/uninstall package_name​ 替代 pip install/uninstall package_name​。

http://www.lryc.cn/news/437422.html

相关文章:

  • windows C++-并行编程-并行算法(五) -选择排序算法
  • 【系统架构设计师-2014年真题】案例分析-答案及详解
  • windows C++-并行编程-并行算法(三)-分区工作
  • 下载 llama2-7b-hf 全流程【小白踩坑记录】
  • Codeforces practice C++ 2024/9/11 - 2024/9/13
  • RabbitMQ创建交换机和队列——配置类 注解
  • proteus+51单片机+AD/DA学习5
  • 【Python机器学习】长短期记忆网络(LSTM)
  • 【Go】使用Goland创建第一个Go项目
  • STM32学习笔记(一、使用DAP仿真器下载程序)
  • 储能运维管理云平台解决方案EMS能量管理系统
  • 网络药理学:16、速通流程版
  • P2515 [HAOI2010] 软件安装
  • 51单片机快速入门之定时器和计数器
  • 【计算机网络 - 基础问题】每日 3 题(一)
  • Unity全面取消Runtime费用 安装游戏不再收版费
  • IDEA测试类启动报 “java: 常量字符串过长” 解决办法
  • 计算机科学基础 -- 访存单元
  • Linux压缩、解压缩、查看压缩内容详解使用(tar、gzip、bzip2、xz、jar、war、aar)
  • StreamReader 和 StreamWriter提供自动处理字符编码的功能
  • Gitlab备份、迁移、恢复和升级(Gitlab Backup, migration, recovery, and upgrade)
  • MySQL:INSERT command denied to user
  • 【Android安全】Ubuntu 16.04安装GDB和GEF
  • ISO 21434与网络安全管理系统(CSMS)的协同作用
  • Vue 67 vuex 四个map方法的使用
  • Unity自带脚本之GameObject脚本
  • 软件测试面试题-自测
  • 深度学习-神经网络
  • Redis - 集群篇 - 集群模式
  • Robot Operating System——线速度和角速度