新型Python环境与依赖管理工具——pipenv

文章目录

    • pipenv介绍
    • pipenv安装
    • pipenv使用
      • 创建虚拟环境
      • 删除虚拟环境
      • 安装依赖
      • 查看包之间的依赖图
      • 卸载依赖
      • 在虚拟环境中执行命令
      • shell环境下
      • 通过requirements.txt安装依赖
      • 导出requirements.txt文件
      • 查看虚拟环境的路径

pipenv介绍

pipenv可以看做是pipvirtualenv的组合体,基于Pipfile和Pipfile.lock,更好地管理包之间的依赖关系。

Pipfile文件支持生成requirements文件,便于项目代码docker化管理。

Pipfile支持dev环境,可以在调试阶段安装多个调试工具,而不影响生产环境。

pipenv graph可以查看各个包的依赖关系图,卸载时会自动检查该依赖是否被其他包依赖来选择是否彻底删除。

Pipfile除了依赖清单,还可以固定pypi源地址、固定python版本,但Pipfile中的pypi源无法默认设置,每次都需要手动修改,pipenv install的包会强制使用Pipfile中的源。

pipenv shell和pipenv run会自动加载.env文件,将敏感信息保存到.env文件中,不用硬代码写入项目中。

pipenv安装和卸载包无需激活虚拟环境,直接在项目根目录下操作即可,即文件Pipfile同级目录下。

pipenv安装

pip install pipenv

默认情况下,Pipenv会自动选择虚拟环境的存放位置,Windows下通常为C:\Users\xxx\.virtualenvs\,Linux下为./local/share/virtualenvs/

如果想将虚拟环境文件夹存放在项目目录内,则设置环境变量PIPENV_VENV_IN_PROJECT=1,也可以通过设置环境变量WORKON_HOME来自定义存放位置。

pipenv使用

创建虚拟环境

# 在项目根目录下,创建虚拟环境
# 会在项目根目录下生成Pipfile和Pipfile.lock文件
pipenv install # 指定python版本,但需要已经安装了python3.8,否则会报错not found
pipenv --python 3.8
# 指定python路径,在Linux系统中非root用户不使用系统默认的python环境非常有用
pipenv --python "/xxx/xxx/python"

删除虚拟环境

# 删除虚拟环境
# 注意,只删除了虚拟环境存放的目录文件,Pipfile和Pipfile.lock并没有删除
pipenv --rm

安装依赖

# 在项目根目录下,即和Pipfile文件同级目录下
# 安装依赖
# pipenv install xxx时,如果当前目录下没有虚拟环境,pipenv会自动创建一个
# 新项目,可以不用手动pipenv install来创建虚拟环境
pipenv install flask# 添加--skip-lock 可以跳过lock步骤
pipenv install numpy --skip-lock 
# 等最后再使用pipenv lock统一执行lock操作
pipenv lock# 添加--dev(或者-d),在开发环境中安装
pipenv install --dev numpy
pipenv install -d numpy

查看包之间的依赖图

pipenv graph

卸载依赖

pipenv uninstall flask

在虚拟环境中执行命令

# 在虚拟环境中执行命令
# 查看虚拟环境中已安装的依赖列表
pipenv run pip list

shell环境下

# 启动虚拟环境,但注意在命令行不会显示出虚拟环境
# 注意区分好操作是在虚拟环境中还是在系统python环境中
pipenv shell# 退出
exit

通过requirements.txt安装依赖

pipenv install -r requirements.txt

导出requirements.txt文件

# 生产环境的依赖导出
pipenv requirements > requirements-pro.txt# 生产环境+开发环境的依赖导出
pipenv requirements --dev > requirements.txt# 开发环境的依赖导出
pipenv requirements --dev-only > requirements-dev.txt

查看虚拟环境的路径

pipenv --venv

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/184723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开源视频联动物联网平台】流媒体传输协议HLS,FLV的功能和特点

HLS(HTTP Live Streaming)和FLV(Flash Video)都是用于视频流传输的协议或容器格式,但它们在某些方面有着显著的区别和特点。 HLS是一种由苹果公司开发的用于流媒体传输的协议,而FLV则是Adobe公司开发的用于…

【ArcGIS Pro二次开发】:CC工具箱1.1.4更新_免费_50+工具

CC工具箱1.1.4更新【2023.11.30】 使用环境要求:ArcGIS Pro 3.0 一、下载链接 工具安装文件及使用文档: https://pan.baidu.com/s/1OJmO6IPtMfX_vob3bMtvEg?pwduh5rhttps://pan.baidu.com/s/1OJmO6IPtMfX_vob3bMtvEg?pwduh5r 二、使用方法 1、在下…

从物理机到K8S:应用系统部署方式的演进及其影响

公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。 概述 随着科技的进步,软件系统的部署架构也在不断演进,从以前传统的物理机到虚拟机、Docker和Kubernetes,我们经历了一系列变化。 这些技术的引入…

代码随想录图论|463. 岛屿的周长

题目: 给定一个 row x col 的二维网格地图 grid ,其中:grid[i][j] 1 表示陆地, grid[i][j] 0 表示水域。网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰…

VBA技术资料MF88:测试Excel文件名是否有效

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…

【Tkinter系列26/45】通用小部件方法

说明 此处讨论小部件方法,凡是可以产生动作的函数均列在此处。包括:定时器、闲暇、绑定、属性配置、布局管理等,属于高级编程的必备知识。了解通用小部件方法,对于客户定制公共类库有极大助益,请务必掌握。 26 通用小部…

系列二十五、Spring设计模式之适配器模式

一、适配器模式 1.1、概述 适配器模式(Adapter Pattern)用于兼容不相关的接口之间,类似于一个桥梁,它结合了两个独立接口的功能,这种类型的设计属于结构型模式,为了方便大家伙的理解,我举个例子…

什么是美颜sdk?集成第三方美颜sdk的步骤

本文将深入探讨如何集成第三方美颜sdk,为直播平台引入更先进、更具吸引力的美颜特效。 第一步:选择合适的第三方美颜sdk 在开始集成美颜sdk之前,首要任务是选择适合自己直播平台需求的第三方美颜sdk。不同的sdk可能具有不同的特色和性能&a…

如何修改.exe文件的修改时间,亲测有效

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 演示视频: 10秒钟实现将文件的修改…

Linux:可视化管理工具Webmin的安装

一、下载 地址:Webmin官网 我这里下载的是1.700-1版本 二、安装 1、在虚拟机上新建目录并安装软件 mkdir /opt/webmin rpm -ivh webmin-1.700-1.noarch.rpm2、修改webmin的root密码 /usr/libexec/webmin/changepass.pl /etc/webmin root 1234563、修改端口(可…

掌握JavaScript中的解构赋值:深入挖掘隐藏的技巧

掌握JavaScript中的解构赋值:深入挖掘隐藏的技巧 前言基础概念为什么解构赋值如此重要?数组解构的基本语法:对象解构的基本语法:默认值: 解构赋值的妙用从对象和数组中提取值:从数组中提取值:从…

docker读取字体异常

解决方法 docker容器中执行 apk add ttf-freefont 根据版本不同 apk add ttf-dejavu-fonts apk add ttf-bernoulli

【开源】基于Vue.js的医院门诊预约挂号系统的设计和实现

项目编号: S 033 ,文末获取源码。 \color{red}{项目编号:S033,文末获取源码。} 项目编号:S033,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 功能性需求2.1.1 数据中心模块2.1.2…

第十五章 Linux

Python基础、函数、模块、面向对象、网络和并发编程、数据库和缓存、 前端、django、Flask、tornado、api、git、爬虫、算法和数据结构、Linux、设计题、客观题、其他 第十五章 Linux 1. 下面的linux命令中, 那个不能显示出文件的内容 A. tacB. moreC. headD. man在下面的…

Ranger安装和使用

Ranger部署 1.准备 1.1 编译 Ranger编译(已经编译过的话,直接看1.2) 1.1.1 准备到Ranger官网下载ranger的源码:http://ranger.apache.org/download.html 1.1.2 Ranger编译的过程实在非虚拟机环境下完成的,下载好r…

chapter10-homework-Java

第十章作业 Homework01知识点 Homework02知识点 Homework03知识点 Homework04知识点 Homework05知识点 Homework06Homework07Homework08 Homework01 分析执行结果。 public static void main(String[] args) {Car_ c new Car_();Car_ c1 new Car_(100);System.out.println(…

Vue中 实现自定义指令(directive)及应用场景

一、Vue2 1. 指令钩子函数 一个指令定义对象可以提供如下几个钩子函数 (均为可选): bind 只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置。inserted 被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已…

三.排序与分页

目录 一.排序数据二.分页 一.排序数据 1.排序规则 使用ORDER BY 子句排序 ASC(ascend)升序DESC(descend)降序 ORDER BY 子句在SELECT语句的结尾 2.单列排序 SELECT last_name, job_id, department_id, hire_date FROM e…

(蓝桥杯)1125 第 4 场算法双周赛题解+AC代码(c++/java)

题目一&#xff1a;验题人的生日【算法赛】 验题人的生日【算法赛】 - 蓝桥云课 (lanqiao.cn) 思路&#xff1a; 1.又是偶数&#xff0c;又是质数&#xff0c;那么只有2喽 AC_Code:C #include <iostream> using namespace std; int main() {cout<<2;return 0; …

windows系统bat脚本命令总结之复制命令(copy和xcopy)

前言 做了一段时间的bat脚本开发&#xff0c;bat脚本中有各种各样的命令跟传统的编程逻辑完全不同&#xff0c;本专栏会讲解下各种各式的命令使用方法。 本篇文章讲解的是获取windows系统的复制命令&#xff08;copy和xcopy&#xff09;&#xff0c;copy和xcopy是Windows命令行…