手把手教你打包Python项目为whl文件

news2024/11/15 14:02:40

目录

1,打包whl文件作用

2,单个Python文件打包

1、程序目录

2、程序内容

3、打whl包

4、将whl包导入环境

​编辑

5、查看效果

6、代码验证

3、多个python文件打包

1、程序目录

​编辑

2、程序内容

3、打whl包

​编辑

4、将whl包导入环境

5、查看效果

6、代码验证


1,打包whl文件作用

  1. 便于分发.whl文件是一种Python分发包格式,它允许开发者将代码和资源打包在一起,方便其他用户或开发者下载和安装。

  2. 兼容性:Wheel文件格式是跨平台的,可以在不同的操作系统上使用,比如Windows、Linux和macOS。

  3. 安装速度:与源代码包相比,Wheel文件通常安装速度更快,因为它们是预编译的,不需要用户在安装时编译。

  4. 依赖管理:Wheel文件可以包含项目的依赖信息,使得安装过程更加自动化,减少了因缺少依赖而出现的问题。

  5. 版本控制:通过打包成.whl文件,可以清晰地管理不同版本的项目,便于用户选择和升级。

  6. 避免污染环境:使用Wheel文件安装的包通常不会修改全局Python环境,这有助于避免不同项目间的依赖冲突。

  7. 简化开发流程:开发者可以通过Wheel文件快速测试和部署他们的项目,无需担心环境配置问题。

  8. 支持额外的元数据:Wheel文件可以包含额外的元数据,如项目的描述、作者信息、许可证等,有助于用户了解和使用项目。

  9. 支持二进制文件:Wheel文件可以包含编译后的二进制文件,这对于包含C扩展的Python项目尤为重要,可以避免用户在安装时重新编译。

  10. 提高安全性:通过使用可信的Wheel文件源,可以减少从不可信任源下载代码的风险,提高项目的安全性。

2,单个Python文件打包

1、程序目录

在同一个文件夹whiltest下放入python程序和setup程序

目录格式如下:

whltest
    Method.py
    setup.py

2、程序内容

  • Method.py
class Method:
    def __init__(self,name,age):
        self.f_name = name
        self.f_age = age
        print("init success",self.f_name,self.f_age)
 
 
    def getInfo(name,age):
        print(name+"#######"+age)
 
    def my_getInfo(self):
        print(self.f_name,"##########",self.f_age)
  • setup.py
from setuptools import setup
setup(name='Method',
      version='1.0',
      py_modules=['Method'],
      )

3、打whl包

CMD进入setup.py所在目录执行如下命令:

 python setup.py bdist_wheel

在同目录会生成多个文件夹,其中dist文件夹下就是打包成的whl包。

build文件夹通常在构建完成后就不再需要了,除非需要进行调试或查看构建过程的详细信息。在发布或分发项目时,通常只关心最终生成的.whl文件。

4、将whl包导入环境

我使用的是anaconda3,进入对应环境执行如下命令安装:

pip install whl对应全路径

5、查看效果

6、代码验证

3、多个python文件打包

1、程序目录

将多个py文件和__init__.py放在同一个目录下,setup.py要和此目录同级。

目录格式如下:

packageTest
    Test
        __init__.py
        Print.py
        get_data.py
    setup.py

2、程序内容

  • __init__.py
内容为空
  • Print.py
def get_info(x):
    print("x = ",x)
  • get_data.py
def get_data(x):
    x1 = 3*x
    return x1
  • setup.py
from setuptools import setup
 
setup(name='test',
      version='1.0',
      description='test',
      author='xy',
      author_email='123456@qq.com',
      packages=['test'],
      )

3、打whl包

同样CMD进入setup.py同级目录下执行如下命令:

 python setup.py bdist_wheel

4、将whl包导入环境

我使用的是anaconda3,进入对应环境执行如下命令安装:

5、查看效果

同单个python文件打包的五步骤;

6、代码验证

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

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

相关文章

C# Unity 面向对象补全计划 泛型

本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正 1.什么是泛型 泛型(Generics)是C#中的一个强大特性,允许你编写可以适用于多种数据类型的可重用代码,而不需要重复编写…

Canvas实现截图

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>canvas实现截图功能</title><style>.ca…

大型赛事5G室内无线网络保障方案

大型活动往往才是国家综合实力的重要体现&#xff0c;其无线网络通信保障工作需融合各类新兴的5G业务应用&#xff0c;是一项技术难度高、方案复杂度高的系统工程。尤其在活动人员复杂、现场突发情况多、网络不稳定等情况下&#xff0c;如何形成一套高效、稳定的应急通信解决方…

Maven的补充(在IDEA中配置,创建Maven项目)

目录 选择版本 已经创建项目中配置 点击最测的设置- CtrlAltS 点击左侧的Maven&#xff0c;我们只需要修改我标记的 未创建项目配置 点击自定义 进入设置界面&#xff0c;选择构建&#xff0c;执行&#xff0c;部署---构建工具----Maven 开始创建项目 我们要改变两个地…

java开发环境搭建基础之3----开发工具eclipse中Maven配置

一.背景 公司安排了带徒弟任务&#xff0c;写点基础的环境搭建这些吧。搭建基础开发环境&#xff0c;主要是jdk、eclipse、git、maven、mysql。后续再考虑编写jenkins、nexus、docker、1panel等CI/CD环境搭建。本次主要内容是eclipse中maven环境的配置。我的开发环境&#xff0…

Linux安装 Redis

Linux 安装 Redis 1、下载、解压 下载方式为两种&#xff1a;官网、网盘 官网&#xff1a; 我这里下载了&#xff1a;7.0.5 网盘&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1A_-ZL3x3Xa5YNlcDqyuV_A?pwdg8jh 提取码&#xff1a;g8jh 解压&#xff1a; 将…

Helm 学习之路,一文弄懂

1. 什么是 Helm 1.1 概述 Helm 是 Kubernetes 应用程序的包管理器,和redhat中yum 管理包类似. 1.2 架构图v3 1.3 下载 官当 最新版本 官方github curl -LO https://get.helm.sh/helm-v3.15.2-linux-amd64.tar.gz 1.4 安装 解压 #由于是二进制,直接解压到/usr/local/b…

【LabVIEW学习篇 - 12】:通知器

文章目录 通知器案例一案例二案例三&#xff08;在不同VI中用同一个通知器&#xff09; 通知器 同步技术&#xff1a;同步技术用来解决多个并行任务之间的同步或通信问题。 通知器比较适合一对多的操作&#xff0c;类似于广播&#xff0c;一点发出的通知消息&#xff0c; 其它…

【开源】嵌入式Linux(IMX6U)应用层综合项目(2)--智能家居APP

目录 1.简介 1.1功能介绍 1.2技术栈介绍 1.3演示视频 1.4硬件介绍 2.软件设计 2.1智能家居UI设计 2.2.main函数 3.结尾&#xff08;附网盘链接&#xff09; 1.简介 此文章并不是教程&#xff0c;只能当作笔者的学习分享&#xff0c;只会做一些简单的介绍&#xff0c;其…

【电路笔记】-放大器失真

放大器失真 文章目录 放大器失真1、概述2、放大器因幅度失真而产生失真3、削波导致的幅度失真4、谐波引起的频率失真5、相位失真导致的放大器失真放大器失真可以采取许多形式,例如幅度、频率和相位失真,由于剪裁引起。 1、概述 放大器要正确运行且不产生输出信号失真,需要在…

跨境电商做独立站你需要考虑的几个问题

跨境电商卖家无论是做B2B还是B2C的&#xff0c;大部分卖家都是从平台开始做起&#xff0c;后面可能会都接触到独立站&#xff0c;但是说到独立站&#xff0c;相信很大部分的人都不了解&#xff0c;就拿最简单的问题来说&#xff0c;经常有人问&#xff0c;独立站和平台有什么区…

MATLAB(11)智能算法+BP神经网络

一、前言 在MATLAB中实现智能算法与BP神经网络的结合&#xff0c;需要分别编写智能算法的代码和BP神经网络的训练代码&#xff0c;并将两者整合起来。由于篇幅限制&#xff0c;我将提供一个简化的示例&#xff0c;使用遗传算法&#xff08;Genetic Algorithm, GA&#xff09;来…

《学会 SpringMVC 系列 · 返回值处理器》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

微调(二)

Selective类方法中的BitFit 它的核心思想是仅更新模型中的偏置项&#xff08;bias terms&#xff09;或部分偏置项&#xff0c;从而实现参数的稀疏更新。这种方法在小到中等规模的训练数据上表现出色&#xff0c;有时甚至能够超越全模型微调的性能。对于BERT模型&#xff0c;B…

【PGCCC】PostgreSQL 14 小版本分析,有那个版本不建议使用#PG中级

以下是对 PostgreSQL 14 各个小版本的详细分析&#xff0c;包括每个版本的主要变化、修复的 bug 和潜在的问题&#xff1a; PostgreSQL 14.0 发布日期&#xff1a;2021 年 9 月 30 日 主要变化&#xff1a; 增加了并行查询的改进&#xff0c;提升了性能。增强了 JSON 数据类…

美团2024年春招第一场笔试[测开方向],编程题+选择题详解,ACM式C++解法

编程题&选择题 编程题小美的平衡矩阵思路代码 小美的数组询问思路代码 验证工号思路代码 选择题1.在计算机网络中&#xff0c;端口号的作用是什么2.HTTPS协议通过使用哪些机制来确保通信的安全性3.Etag用于标识资源的唯一标识符&#xff0c;他可以用于4.在一个单道系统中&a…

乱弹篇(40)人类追求长寿

不要认为只有中国的老龄化才严重&#xff0c;实际上全球都面临老龄化&#xff0c;其中日本最为严重。 这是随着人类生活和医学水平的不断提高&#xff0c;寿命才会比过去数十年有了大幅度的提升。据资料显示&#xff0c;目前全球平均预期寿命估计为73岁。与百年之前相比&#…

DNS在架构中的使用

1 介绍 DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09;是一种服务&#xff0c;它是域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网&#xff0c;而不用去记住能够被机器直接读取的IP地址数串。简单来说&#xff0c;DNS就是…

dpdk实现udp协议栈

使用DPDK实现UDP用户态协议栈&#xff0c;实现流程中包括&#xff1a; 三类线程 1、收发包线程 2、用户态协议栈线程 3、udp服务端线程 两类缓冲区&#xff1a; 1、协议栈收包缓冲区和协议栈发包缓冲区 2、udp收包缓冲区和udp发包缓冲区 协议栈缓冲区中存储的数据是str…

在线考试系统产品分析与技术实现的深度融合

在当今数字化教育浪潮中&#xff0c;在线考试系统作为教育信息化的重要组成部分&#xff0c;正以前所未有的速度改变着传统教育模式。它不仅打破了地域和时间的限制&#xff0c;提高了考试效率与公平性&#xff0c;还通过数据分析为教育决策提供了科学依据。本文旨在探讨在线考…