python打包wheel文件_python wheel打包_花花少年的博客-程序员秘密

技术标签: python  

一、参考资料

python打包wheel文件
Python打包whl文件

二、重要说明

打包的package中需要包含README.md、LICENSE[非必须]和setup.py文件。三者分别是说明文档,许可证以及python setuptools所用来安装该package的构建脚本。

setup.py中包含了package对应的信息(例如该package的名称、版本、作者)以及该package应当包含的程序文件和数据。

三、参数解释

name: 该package的名字,该名字可以由字母、数字、-组成,注意这个名字不能与其它已经上传到pypi.org的项目相同
version: 这个就是包的发布版本,可以直接写在这,也可以从其它地方引用
author: author可以用来指定该package的作者信息
author_email: 这个也是指定该package的作者信息
py_modules: 打包的.py文件
license: 支持的开源协议
description: 对当前package的较短的总结
long_description: 是对当前package的详细说明。这一详细说明将被展示在Python Package Index上当前项目的主页
long_description_content_type: 指定了long_description内容的格式。在当前情况下为markdown
url: 是当前package的主页链接。大多数情况下这是一个GitHub, GitLab, Bitbucket或者其他代码存储服务的链接
packages: 打包的python文件夹,是一系列应当包含在发布软件包文件(distribution package)中的可被import的python包文件。我们可以手动在此处罗列所有文件。或者如本例中一样使用find_packages()函数自动包含所有的python包文件以及子包文件。
python_requires: python依懒版本
classifiers: 指定了当前package的其他元信息(metadata)。例如当前package兼容的python版本和操作系统,当前package提供的功能的类型,当前package的许可证等等。我们应当总是至少包括当前package所支持的python版本,操作系统和许可证。注意此处定义的classifiers关键字所包含的信息应当符合PyPI的规定。
requires : 定义依赖哪些模块
install_requires: 指定了当前package所依赖的其他python类库。这些指定的python类库将会在本package被安装的时候一并被安装。
platforms: 程序适用的软件平台列表
keywords: 程序的关键字列表
include_package_data: 是否自动包含包内所有受版本控制(cvs/svn/git)的数据文件,默认True
entry_points: 用来支持自动生成cli命令

四、关键步骤

printdemo.py

def demo():
    print('print demo')

setup.py

from setuptools import  setup
setup(
    name='printtest',
    version='1.0',
    py_modules=['printtest']
)
from setuptools import setup


setup(
    name='quantizer',
    version='1.0.0',
    description='Offline quantitative toolkit.',
    long_description='This kit can be applied on the edge or terminal equipment, \
    the model can be offline quantitative compression.\
    Note, this toolkit tied with hardware devices.',
    author='yoyo',
    author_email='[email protected]',
    url='https://www.python.org/',
    license='MIT',
    keywords='ga nn',
    project_urls={
    
            'Documentation': 'https://packaging.python.org/tutorials/distributing-packages/',
            'Funding': 'https://donate.pypi.org',
            'Source': 'https://github.com/pypa/sampleproject/',
            'Tracker': 'https://github.com/pypa/sampleproject/issues',
    },
    py_modules=['build_engine'],
    install_requires=['numpy>=1.14', 'tensorflow>=1.7'],
    python_requires='>=3',
    platforms='Linux'
)

制作wheel文件

python setup.py bdist_wheel
.
├── build
│   ├── bdist.linux-x86_64
│   └── lib
│       └── printdemo.py
├── dist
│   └── printdemo-1.0.0-py3-none-any.whl
├── printdemo.egg-info
│   ├── dependency_links.txt
│   ├── PKG-INFO
│   ├── requires.txt
│   ├── SOURCES.txt
│   └── top_level.txt
├── printdemo.py
└── setup.py

5 directories, 10 files

安裝wheel包

cd dist
pip install printdemo-1.0.0-py3-none-any.whl

测试wheel包

import printdemo
printdemo.demo()

执行结果

(tensorRT-efficientdet) [email protected]:~/桌面/生产环境$ python
Python 3.7.11 (default, Jul 27 2021, 14:32:16) 
[GCC 7.5.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import printdemo
>>> printdemo.demo()
print demo
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_37605642/article/details/121300084

智能推荐

Linux策略路由_bingyu9875的博客-程序员秘密

1. GRE介绍GRE隧道是一种IP-over-IP的隧道,是通用路由封装协议,可以对某些网路层协议的数据报进行封装,使这些被封装的数据报能够在IPv4/IPv6 网络中传输。 Tunnel 是一个虚拟的点对点的连接,提供了一条通路使封装的数据报文能够在这个通路上传输,并且在一个Tunnel 的两端分别对数据报进行封装及解封装。 一个X协议的报文要想穿越IP网络在Tunnel中传输,必须要经

WIN7升WIN10后 出现蓝屏 kernel security check failure / driver irql not less or equal(蓝屏问题已经解决 请看我另一篇博文)_大海Git的博客-程序员秘密

升win10后的使用感受今年2月份的我写过一篇文章是介绍了如何处理在win7升win10过程中如何处理出现的蓝牙驱动问题,现在我使用升级后的win10系统已经有将近半年的时间了。我想谈谈下自己的使用感受(其实在升win10前我是有些担心机器不行的,我的机器是Thinkpad L440 14年的机子)好的1、win10 界面 样式 功能 都比win7有了很大提高2、我最喜欢的是他对双屏的友好支持,两边都有任务栏3、我还很喜欢他的开始菜单里面以磁力贴的形式提供的快捷方式,这种设计非常..

python去除Excel重复项_耄先森吖的博客-程序员秘密

可以使用 Python 的 pandas 库来去除 Excel 中的重复项。首先,你需要安装 pandas:pipinstall pandas然后,你可以使用 pandas 的 read_excel() 函数来读取 Excel 文件,并使用 drop_duplicates() 函数来去除重复项。例如,假设你有一个名为 "data.xlsx" 的 Excel 文件,并且你想要去除其中 "N...

java设计模式之状态模式(state pattern)_hanjiangb的博客-程序员秘密

基本介绍主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换当一个对象内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类原理图如下:原理类图的说明:Context:环境角色,用于维护State实例,这个实例定义当前状态State:抽象状态角色,定义一个接口封装与Context的一个特点接口相关行为ConcreteState:具体的状态角色,每个子类实现一个与Context的一个状态相关行为案例App抽奖活动问题请

xcode-select: note: install requested for command line developer tools_码上爱的博客-程序员秘密

描述:因为各种原因,mac重新安装了系统,好几年下载的软件都要重新下载。当然更重要的是把一些系统的工具安装一下。安装brew软件管理工具的时候遇见了怎么一个错误。xcode-select: note: install requested for command line developer tools,根据网上搜的资料总结了一下。虽然一下没有解决但是,也给我提供了很多帮助。1、首先安装brewruby -e "$(curl -fsSL https://raw.github.com/Homebrew/ho

linux学习之ssh-copy-id及其替代命令_wangeen的博客-程序员秘密

使用以下命令代替ssh-copy-id:cat ~/.ssh/id_dsa.pub | ssh [email protected] "umask 077; mkdir -p .ssh ; cat >> .ssh/authorized_keys"

随便推点

小步快跑,快速迭代-《高效程序员的45个习惯》读书笔记_何一涛的博客-程序员秘密

高效程序员的45个习惯简短有力,对敏捷开发中遇到的问题做了原则上的指导,刚工作的程序员可以获得新知形成良好习惯,有经验的开发也可以对照着纠正自己的一些固有习惯。虽然有些习惯纯属凑字用,还有些重复,对照着依然可以从中发现自己缺失的习惯:打破砂锅问到底:不满足于解决问题,而是要从解决问题过程中深究问题根源,不要解第二次使用单元测试:从现在开始使用记录解决问题的日志:记录下来,才能印象深刻...

excel删除行闪退_Excel出现闪退如何处理?_weixin_39784195的博客-程序员秘密

回答:这很有可能是以下原因造成,需要重新保存即可解决。电脑配置过低,系统整体运行效率不高。Excel软件安装的不正确或者版本不对。电脑内的垃圾过多也会导致运行效率不高,进而出现一打开Excel软件就死机的情况。电脑被病毒破坏。Excel文件本身内存过大,占用资源过多。Excel软件部分设置不恰当。可以尝试以下解决办法:方法一:打开Excel表格点击左上角文件选项;在出现的窗口菜单中点击另存为,选择...

Android 进阶技术汇总八: 跨进程 通信(binder+aidl)+数据访问(ContentProvider :DB&SharedPreference)_架构师训练营的博客-程序员秘密

1. binder原理+aidl 使用参照:https://blog.csdn.net/gh1312824890/article/details/822557922. 跨进程的数据访问:ContentProvider使用方法参照:https://blog.csdn.net/shaochen2015821426/article/details/79748487 备注:ContentPr...

1分钟读懂低功耗蓝牙广播数据_低功耗蓝牙官方demo解读_viewtoolsz的博客-程序员秘密

一分钟读懂低功耗蓝牙(BLE)广播数据包低功耗蓝牙 =》 BLE (Bluetooth Low Energy)1. 怎样抓取BLE广播数据包   * 硬件:一个BLE设备(具有广播功能);         一台HOLLONG BLE SNIFFER   * 软件:Hollong 蓝牙4.0/4.1 BLE协议监控分析仪 软件        下载链接:        http://ww...

Linux创建用户_高山寨顶的博客-程序员秘密

    Linux创建用户一般是用adduser命令来创建用户的有两种情况:    1、在root用户下:使用adduser只是创建了一个用户名,如(adduser + 用户名),也不会提示你设置用户的登录密码,它也没有在/home目录下创建同名文件夹,所以这个创建的用户是登录不了的,此时要设置密码就需要用passwd 命令来添加密码。当设置的密码少于8个字符时,会提醒你重新输入,没关系在重新输入...

ssky-keygen + ssh-copy-id 无密码登陆远程LINUX主机【OK】_mxslgyb的博客-程序员秘密

ssky-keygen + ssh-copy-id 无密码登陆远程LINUX主机【OK】  转自:http://blog.163.com/lgh_2002/blog/static/44017526201011333227161/2010-12-03 15:32:27|

推荐文章

热门文章

相关标签