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

使用Python制作自己的wheel文件

平时自己利用Python制作一个个小工具后想分享给别人,但又嫌分享一堆项目代码很麻烦,那么你可以考虑将自己的项目打包成一个wheel文件,别人拿到文件后只需pip install安装即可使用,非常方便。

在上一篇博文中,利用nvidia-ml-py包制作了一个类似nvidia-smi的小工具,那本篇博文就将之前写的小工具制作成一个wheel文件:
https://blog.csdn.net/qq_37541097/article/details/136519868

首先将项目目录结构整理成如下所示:

├── LICENSE
├── my_gpu_tools
│   ├── __init__.py
│   └── main.py
└── setup.py

其中main.py文件就是上篇博文提供的源码,这里就不在重复贴了。在__init__.py文件中可以将一些常用的包导入,方便用户导包使用例如:

from .main import GPUMonitor

LICENSE是对应当前项目的使用协议,作者可以根据不同用途选择设置不同的协议(这里偷个懒放个空文件)。而setup.py是本博文最核心的文件:

from setuptools import setup, find_packagessetup(name="my_gpu_tools",version="0.0.1",description="my gpu tools that similar to nvidia-smi",author="WZMIAOMIAO",packages=find_packages(),install_requires=["prettytable", "nvidia-ml-py"],license="LICENSE",entry_points={"console_scripts": ["gpu-tools = my_gpu_tools.main:monitor_script"]}
)

在该文件中描述了制作wheel文件的一些信息,例如wheel包的名称,版本,描述,作者,当前项目依赖的第三方库,协议以及一些快捷脚本的设置等等。这里的setup.py写的也非常简单,大家看看也都能理解。这里简单说下entry_points下的console_scripts的作用,这里可以设置一些快捷的启动脚本,例如大家安装了pytorch后就会发现有个名为torchrun的工具可以直接使用非常方便。那么本博文中将my_gpu_tools文件夹下main文件里的monitor_script函数制作为一个快捷的使用脚本,并且这个工具的名称为gpu-tools

准备好以上文件后在项目根目录下使用如下指令,即可生成我们想要的wheel文件:

python setup.py bdist_wheel

执行完后,项目目录下会生成一些新的文件:

├── LICENSE
├── build
│   ├── bdist.linux-x86_64
│   └── lib
│       └── my_gpu_tools
│           ├── __init__.py
│           └── main.py
├── dist
│   └── my_gpu_tools-0.0.1-py3-none-any.whl
├── my_gpu_tools
│   ├── __init__.py
│   └── main.py
├── my_gpu_tools.egg-info
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   ├── dependency_links.txt
│   ├── entry_points.txt
│   ├── requires.txt
│   └── top_level.txt
└── setup.py

其中我们想要的wheel文件就放在dist下,我们将my_gpu_tools-0.0.1-py3-none-any.whl文件分享给自己的朋友,朋友拿到后通过以下指令即可安装使用:

pip install my_gpu_tools-0.0.1-py3-none-any.whl

安装后可以在代码中通过from my_gpu_tools import GPUMonitor方式将我们制作好的包导入直接使用。当然也可以直接在终端命令行里通过gpu-tools -n 0.5指令来直接调用我们提供的快捷启动脚本。
在这里插入图片描述

相关文章:

  • [赛码网、牛客刷题、ACM模式] python读取输入
  • MyBatis操作数据库(SQL注入)
  • Autosar教程-Mcal教程-GPT配置教程
  • LayerNorm的图是不是画错了
  • 先缓存第二集抖音接入 ,最近加班猛,就分享简单的知识,如何使用:关于使用replace的用法正则表达式
  • Redis场景总结
  • Java算法之动态规划
  • 集合拆分Lists.partition的使用
  • Redis--线程模型详解
  • [uni-app ] createAnimation锚点旋转 及 二次失效问题处理
  • Mysql按照月份分组统计数据,当月无数据则填充0
  • STM32day2
  • 【AI视野·今日Sound 声学论文速览 第五十四期】Thu, 7 Mar 2024
  • 安装zabbix
  • C++ 特殊的类设计
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • CentOS6 编译安装 redis-3.2.3
  • CSS盒模型深入
  • Java Agent 学习笔记
  • vue:响应原理
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 记一次用 NodeJs 实现模拟登录的思路
  • 利用DataURL技术在网页上显示图片
  • 深入浅出Node.js
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​linux启动进程的方式
  • #QT(TCP网络编程-服务端)
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (31)对象的克隆
  • (39)STM32——FLASH闪存
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (ZT)出版业改革:该死的死,该生的生
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (力扣)循环队列的实现与详解(C语言)
  • (六)vue-router+UI组件库
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (四)鸿鹄云架构一服务注册中心
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net 发送邮件
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .stream().map与.stream().flatMap的使用
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • ::什么意思
  • [ C++ ] STL_list 使用及其模拟实现
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [04]Web前端进阶—JS伪数组