【python】使用pipenv创建虚拟环境进行打包

文章目录

  • 一、pipenv 介绍
  • 二、快速上手使用pipenv
    • 2.1 安装pipenv
    • 2.2 创建虚拟环境
    • 2.3 激活环境
    • 2.4 虚拟环境中安装项目依赖包
    • 2.5 检查项目在虚拟环境中是否能正常运行
    • 2.6 打包项目
    • 2.7 删除虚拟环境

在这里插入图片描述

起因: 本地安装的模块太多,使用pyinstaller打包,会把许多无关模块打包进去,程序特别大。

如果能够创建一个虚拟的python环境,只安装要打包程序的依赖包就好了。

pipenv恰好能解决这个问题,pipenv安装的依赖包会保存至项目虚拟环境目录下,不会污染系统全局环境。

当然pipenv应用场景不止于此。

一、pipenv 介绍

pipenv是一个Python的包管理工具,它是requests作者Kenneth Reitz的作品,提供Python的各个版本间的管理,各种包管理。

pipenv主要有以下特点:

  • pipenv集成了pip,virtualenv两者的功能。

  • pipenv会在项目根目录下创建 Pipfile文件用于记录包的版本信息 、 Pipfile.lock 文件来锁定安装包的版本和依赖信息,管理包之间的依赖关系。

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

  • 在一个新的项目根目录下执行 pipenv install,则他会自动创建一个虚拟环境,并且生成一个Pipfile文件;
    当 install 命令没有传递参数指定安装包,如果当前存在Pipfile,则会自动安装所有Pipfile中的packages中的包。

二、快速上手使用pipenv

下面快速介绍pipenv的基本使用,本文的使用的是windows下的Python3.9。

2.1 安装pipenv

cmd窗体中,输入代码:

pip install pipenv

安装完成后,随意新建一个文件夹TEST2,cmd管理员权限切换到该文件夹路径下。

2.2 创建虚拟环境

方式1:安装指定python版本的虚拟环境: pipenv install --python 3.9

注:–python前面是两个横杠。要打包的.py项目文件用的什么python版本安装的第三方库,就安装什么python版本,(python版本不同安装的同名第三方库可能有差异),不然很可能打包出来的exe不能运行。

方式2:直接使用命令pipenv install,在虚拟环境目录下新增一个虚拟环境
在这里插入图片描述

执行完后,可以看到当前目录下创建了 Pipfile 、 Pipfile.lock 文件。
Pipfile文件用于记录包的版本信息 ;
Pipfile.lock 文件来锁定安装包的版本和依赖信息,管理包之间的依赖关系;

在这里插入图片描述

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

2.3 激活环境

在文件夹TEST2根目录中激活环境:pipenv shell

查看虚拟环境安装了什么模块:pip list
在这里插入图片描述

2.4 虚拟环境中安装项目依赖包

在激活的虚拟环境中安装需要的第三方库,跟正常在python中安装库是一样的,例如:pip install datetime

me

卸载库也是跟正常在python中卸载库是一样使用:pip uninstall datetime

在这里插入图片描述

2.5 检查项目在虚拟环境中是否能正常运行

将要运行的项目文件,放在文件夹TEST2根目录下,有两种方式运行:
方式1:在激活的虚拟环境中,cmd输入:python xxx.py

方式2:在未激活的虚拟环境状态下,文件夹TEST2根目录下cmd输入:pipenv run python xxx.py(只要有Pipfile文件即可)

运行完程序未报错,则认为项目在该虚拟环境下能正常运行;
如果程序报错缺依赖包,再按上面2.4的步骤安装项目依赖包。

2.6 打包项目

在虚拟环境中安装打包工具:pip install pyinstaller
打包:pyinstaller -F xxx.py,pyinstaller其它参数不做详细介绍。

如果下次要进入该虚拟环境,直接在文件夹TEST2根目录中,执行cmd语令pipenv shell即可进入

2.7 删除虚拟环境

cmd中执行命令pipenv --rm
在这里插入图片描述
删除虚拟环境后,如果目录下仍存在 Pipfile 、 Pipfile.lock 文件,可以通过pipenv install重新进行安装虚拟环境,且重新安装的虚拟环境,名称与删除前一致。

若想退出虚拟环境,可输入 exit 退出
在这里插入图片描述

以上就是使用pipenv创建虚拟环境进行打包的整个流程。

在这里插入图片描述

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

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

相关文章

【头歌系统数据库实验】实验5 SQL的多表查询-1

目录 第1关:等值连接:求S表和J表城市相同的等值连接(列顺序还是按照S、J表) 第2关:查询供应情况,并显示供应商、零件和工程三者的名称 第3关:找出上海厂商供应的所有零件号码 第4关:找出使用上海产的零…

关于inline函数声明和定义为什么不可以分离

个人主页:Lei宝啊 愿所有美好如期而遇 前言 inline函数在使用时声明和定义不可以分离,接下来我们将会解释为什么是这样的。 我们从程序的编译链接说起。 首先我们先介绍一下程序的翻译环境: 编译分以下几个步骤,预处理&#x…

Hadoop学习笔记(HDP)-Part.08 部署Ambari集群

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

R语言【rgbif】——最全最详细的函数解读(occ_search)

occ_search最全最详细的参数解读 occ_search有什么作用?occ_search有哪些参数?occ_search的参数使用?aa. 通过名称完成筛选的参数1. taxonKey(用于检索的类群的标识符)2. scientificName(用于检索的类群的科…

U盘文件突然不见了怎么恢复?文件恢复(3个方法)!

“好奇怪呀!一般我都会把比较重要的文件保存在u盘中,但是今天使用u盘的时候却发现u盘里的文件突然不见了,这是为什么呢?我怎么才能恢复这些数据呢?” 在我们的日常生活和工作中,U盘作为一种便携式的存储设备…

ChatGPT哪些行业需要学习?

2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车…

CSS进阶知识点速览2

1 前情回顾 关于选择器进阶、背景色、元素显示模式和css特性的前半部分集中在下面的笔记中: css进阶知识点速览 2 CSS特性 2.1 优先级 特性:不同选择器具有不同的优先级,优先级高的选择器样式会覆盖优先级低选择器样式 优先级公式&#x…

网安专家带你学透网络渗透测试,小白零基础启航

渗透测试简介 渗透测试,作为评估网络安全的一种方法,模拟攻击者对目标系统的攻击,以评估系统的安全性。这种方法不仅揭示了系统的潜在漏洞,而且还帮助我们理解攻击者可能利用这些漏洞的方式。在这个数字化和网络化日益增长的时代…

R语言【rgbif】——最全最详细的函数解读(name_suggest)

name_suggest最全最详细的参数解读 1. name_suggest的基本情况2. name_suggest的参数3. name_suggest的示例与理解3.1 参数 【q】3.2 参数【rank】3.3 参数【limit】3.4 参数【fields】3.5 参数【datasetKey】3.6 参数【curlopts】 1. name_suggest的基本情况 name_suggest是用…

堆能高效解决的经典问题

关卡名 堆能高效解决的经典问题 我会了✔️ 内容 1.掌握数组中寻找第K的元素 ✔️ 2.理解堆排序的原理 ✔️ 3.合并K个排序链表 ✔️ 1 在数组中找第K大的元素 LeetCode215 给定整数数组nums和整数k,请返回数组中第k个最大的元素。 请注意,你需要…

力扣面试经典150题——Unix简化路径

https://leetcode.cn/problems/simplify-path/description/?envTypestudy-plan-v2&envIdtop-interview-150 思路:将串以/分割,判断字符串是…/./其他,进行入栈和出栈,最后留下的就是结果,拼装一下就好了。 三个…

海上液化天然气 LNG 终端 ,数字孪生监控系统

液化天然气 (Liquefied Natural Gas,简称 LNG) 在能源转型过程中被广泛认可为相对较清洁的能源选择。 相对于传统的煤炭和石油燃料,LNG 的燃烧过程产生的二氧化碳 (CO2) 排放较低。LNG 的燃烧释放的二氧化碳排放较少,因此对应对气候变化和减…

【Math】高斯分布的乘积 Product of Gaussian Distribution【附带Python实现】

【Math】高斯分布的乘积 Product of Gaussian Distribution【附带Python实现】 文章目录 【Math】高斯分布的乘积 Product of Gaussian Distribution【附带Python实现】1.推导2. CodeReference 结果先放在前面 1.推导 在学习PEARL算法的时候,encoder的设计涉及到了…

MySQL limit导致索引选择(选择的并不是最佳索引)案例分析

mysql limit导致索引选择(选择的并不是最佳索引)案例分析: 这种情况可能是mysql优化器内部bug造成: bug 触发条件如下: 1.优化器先选择了 where 条件中字段的索引,该索引过滤性较好; 2.SQL 中必须有 orde…

k8s中Service负载均衡和Service类型介绍

目录 一.service介绍 二.service参数详解 三.定义service的两种方式 1.命令行expose 2.yaml文件 四.service负载均衡配置 1.kube-proxy代理模式 (1)设置ipvs (2)负载均衡调度策略 2.会话保持 3.案例演示 五.四种Servi…

[Python]字典的应用:赋值表达式转化为字典

文件中有很多行,每行中一个等号,等号左边是键右边是值,如何把这些键值对获取到 def read_key_value_pairs(file_path):key_value_pairs {}i 0# 注意解码格式与编码格式相统一with open(file_path, r, encodingutf-8) as file:for line in…

docker镜像与容器的基本操作,容器打包以及镜像迁移

docker镜像拉取---docker pull docker pull image_name[:tag] 这是直接拉取官方镜像 image_name: 镜像的名称,例如 ubuntu, nginx, mysql 等。tag: 镜像的标签,表示版本或者特定的标识。如果未指定标签,默认为 latest。 例如,…

C# OpenCvSharp DNN 深度神经网络下的风格迁移模型

目录 介绍 效果 项目 代码 下载 C# OpenCvSharp DNN 深度神经网络下的风格迁移模型 介绍 深度神经网络下的风格迁移模型,适用于OpenCv、EmguCv。 斯坦福大学李飞飞团队的风格迁移模型是一种基于深度学习的图像处理技术,可以将一张图像的风格转移…

ArcGIS模型构建器--制作工具篇

基础知识点: 变量替换 1、要素替换 %name%,name为替换的名字 2、工作空间替换(拷贝给其他人仍可使用) 新建一个工作空间变量workspace %workspace%\%name% 中间数据处理 在模型构建器界面运行模型,会生成中间数据。 中间数据处理方法…

高性能网络编程 - 白话TCP 三次握手过程

文章目录 概述TCP协议头的格式TCP Finite State Machine (FSM) 状态机三次握手如何在 Linux 系统中查看 TCP 状态 概述 每一个抽象层建立在低一层提供的服务上,并且为高一层提供服务。 我们需要知道 TCP在网络OSI的七层模型中的第四层——Transport层 -----------…