【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关:找出使用上海产的零…

pythonGIL锁

一、GIL(Global Interpreter Lock)全局解释器锁是Python解释器中的一个机制,用于保证同一个时间只有一个线程能够执行Python字节码。这意味着在同一个时刻,只有一个线程能够访问共享的Python对象。 1、数据都是全局共享的&#x…

关于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 …

Python 字典详解(dict)

文章目录 1 概述1.1 性质 2 常用方法2.1 以列表返回所有键:keys()2.2 以列表返回所有值:values()2.3 以列表返回所有键值对:items()2.4 返回键对应的值:get()2.5 添加键值对:setdefault()2.6 修改键值对:di…

记录 | python保存pytorch tensor至txt中的方法

有时候,为了方便调试、定位问题,需要把 pytorch 中的 tensor 张量保存到 txt 中,方法如下, 比如需要保存的 pytorch 的 tensor 为 outputs,其维度为 [1, 1, 250, 11],则: with open("outp…

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…

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

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

Flask 集成SQLAlchemy

在这一篇中,我们将学习如何在 Flask 中集成数据库,并使用 ORM(对象关系映射)来进行数据库操作。数据库是许多 Web 应用的核心组成部分,通过使用 Flask-SQLAlchemy 这个强大的工具,我们可以轻松地与数据库进…

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 思路:将串以/分割,判断字符串是…/./其他,进行入栈和出栈,最后留下的就是结果,拼装一下就好了。 三个…

shell echo 不换行 覆盖当前行

echo -n 不换行输出 法1. echo -n "123" echo "456" 结果为: 123456 法2 echo -e "123\c" echo "456" 结果为: 123456 不换行,覆盖当前行 注: -n 不换行 \r 光标移到行首 如 echo -…

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

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

Linux服务器配置指南:网络、用户管理、共享服务及DNS配置详解

💂 个人网站:【 海拥】【神级代码资源网站】【办公神器】🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交流的小伙伴,请点击【全栈技术交流群】 1.Linux操作系统网络配置&#xff…

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

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

Helm 私有仓库搭建

原理 构建一个本地的Helm chart仓库 任何的HTTP Server都可以作为chart仓库 开源实现参考文档 ## Chartmuseum https://www.jianshu.com/p/772754c68ea4##chart私有仓库创建 httpd私有仓库 需要手工scp package传包上去。 docker run -d -p 8081:80 -v /var/www:/usr/loca…