【Python學習筆記】whl包打包

將python代碼、文件、數據打成一個whl包,可以直接pip 安裝到系統中,有兩種方法:(1)setup.py;(2)pyproject.toml

1. 使用setup.py

├── CHANGELOG.md
├── README.md
├── build
│?? ├── bdist.linux-x86_64
│?? └── lib
├── ci.yml
├── dist
│?? └── nvidia_modelopt-0.0.0-py3-none-any.whl
├── modelopt
│?? ├── __init__.py
│?? ├── __init__.pyc
│?? ├── __pycache__
│?? ├── deploy
│?? ├── onnx
│?? └── torch
├── nvidia_modelopt.egg-info
│?? ├── PKG-INFO
│?? ├── SOURCES.txt
│?? ├── dependency_links.txt
│?? ├── requires.txt
│?? └── top_level.txt
├── setup.py
└── test.py
from setuptools import setup, find_packagessetup(name="nvidia-modelopt",packages=find_packages(),install_requires=["torch"],include_package_data=True,package_data={"modelopt": ["modelopt", "*", "**/*"],},extras_require={"torch": ["torch"],},description="modelopt for guanxing"
)

直接運行 python setup.py bdist_wheel 打包文件

2. 使用?pyproject.toml

my_package_demo/
├── pyproject.toml
├── README.md
├── src/
│   └── my_package/
│       ├── __init__.py
│       └── core.py
├── tests/
│   └── test_core.py
└── data/└── sample_data.txt
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"[project]
name = "my-package-demo"
version = "0.1.0"
description = "A demo Python package."
readme = "README.md"
authors = [{ name = "Your Name", email = "you@example.com" }
]
requires-python = ">=3.7"
dependencies = [][tool.hatch.build.targets.wheel]
# 明確指定要打包的包目錄(src模式)
packages = ["src/my_package"]# 如要包含額外的數據文件(可選)
include = ["src/my_package/**.py","data/sample_data.txt"
]
  • [tool.hatch.build.targets.wheel].packages?指定只打包?src/my_package?下的包,不含其它目錄。
  • include?顯式指定只包含?src/my_package?目錄下的?.py?文件和?data/sample_data.txt?數據文件,可精準控制(若只要包本身,可以省略或只寫包目錄)。

如果使用setuptools,可以這樣寫:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"[project]
name = "my-package-demo"
version = "0.1.0"
description = "A demo Python package."
readme = "README.md"
requires-python = ">=3.7"[tool.setuptools]
package-dir = { "" = "src" }
packages = ["my_package"]
include-package-data = true[tool.setuptools.package-data]
my_package = ["../data/sample_data.txt"]   # 注意路徑調整# 或者只包含py文件
# my_package = ["*.py"]
pip install build
python -m build

附一個比較全的pyproject.toml模版

# 構建系統配置
# PEP 517 規定的構建系統配置,指定構建工具和后端
[build-system]
# 構建時需要的依賴
requires = ["hatchling"]
# 構建后端,使用 hatchling 替代傳統的 setuptools
build-backend = "hatchling.build"# 項目元數據配置
# PEP 621 規定的項目核心元數據
[project]
# 項目名稱,將用于發布和安裝
name = "nvidia-modelopt"
# 項目版本,1.0.0 以上版本被視為正式發布版本
version = "0.1.0"
# 項目簡介,不支持非英文字符
description = "Hello world"
# README 文件路徑,用于生成長描述
readme = "README.md"
# Python 版本要求
requires-python = ">=3.10"
# 許可證信息
license = { text = "MIT" }
# 作者信息列表
authors = [{ name = "xxx", email = "xxx" }
]
# 關鍵詞,用于包索引和搜索
keywords = ["xx", "yy"]
# 項目分類,用于 PyPI 分類(如果項目不打算開源可以忽略)
# 完整分類列表:https://pypi.org/pypi?%3Aaction=list_classifiers
classifiers = ["Private :: Do Not Upload","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3.10"
]
# 項目依賴列表
dependencies = ["build>=1.0.3"
]# 可選依賴配置,可通過 pip install package[test] 安裝
[project.optional-dependencies]
# 測試相關依賴
test = ["pytest","mock"
]# 項目相關 URL 配置
[project.urls]
# 項目主頁,通常是項目的 icode 地址
Homepage = "http:xxxx"
# 更新日志文件鏈接
Changelog = "CHANGELOG.md"# 命令行入口點配置
[project.scripts]
# 格式:命令名 = 模塊路徑:函數名
modelopt = "modelopt.cmdline:main"# Hatch 構建工具配置
[tool.hatch.build]
# 要包含的 Python 包
packages = ["modelopt"]
# 要包含的數據文件
# 支持通配符模式
# "modelopt": ["modelopt", "*", "**/*"],
include = ["modelopt","modelopt/*"
]# wheel 包構建配置
[tool.hatch.build.targets.wheel]
# 指定要打包的 Python 包
packages = ["modelopt"]
# wheel 包輸出目錄
output-dir = "output/dist"# 源碼包構建配置
[tool.hatch.build.targets.sdist]
# 源碼包輸出目錄
output-dir = "output/dist"

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/920656.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/920656.shtml
英文地址,請注明出處:http://en.pswp.cn/news/920656.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mac Pro M4芯片 安裝 VMware Fusion 和 windows

Mac Pro M4芯片 安裝 VMware Fusion 和 windows 吐槽: 第一次從Intel芯片換成M芯片Mac…虛擬機坑了我一把!搞了很久! 1、安裝 VMwareFusion Pro 這個軟件已經正式免費提供給個人用戶使用! 【官網】 VMware Fusion Pro Download 1. 注冊登錄 省略…進入管理后臺 2. 下載虛…

Carrier Aggregation Enabled MIMO-OFDM Integrated Sensing and Communication

文章目錄C. Sensing ModeII. A NOVEL CA-ENABLED MIMO-OFDM ISAC SIGNAL PROCESSING METHODA. Signal Preprocessing StageB. Sensing Performance Analysis對支持 CA 的 ISAC 系統的研究可分為兩類:帶內 CA 和帶間 CA。支持 CA 的 ISAC 系統的主要挑戰在于信號設計…

Linux 下 Docker 容器部署指南(Java + Redis 示例)

Linux 下 Docker 容器部署指南(Java Redis 示例)一、Docker 鏡像源配置二、構建 Docker 鏡像三、運行 Docker 容器四、查看容器日志五、實踐思考與擴展在 Linux 上部署 Java 應用到 Docker 容器中,并訪問宿主機的 Redis 服務,是一…

智能聊天機器人-基于Spring AI實現

項目背景隨著??智能技術的快速發展和?模型開源趨勢的興起,智能聊天機器?在客服、知識問答、?活助? 等領域得到了?泛應?,我們接下來模仿這些應用實現一個智能的聊天機器人核心功能1.對話支持用戶和機器人之間的對話實時響應用戶的輸入,進行回答2.…

廣東省省考備考(第九十天8.30)——判斷推理(強化訓練)

判斷推理:類比推理(訓練1) 錯題解析 第一步:判斷題干詞語間邏輯關系。 綾、羅、綢、緞表示的是四種不同的絲織物,四者為并列關系,且分別都與絲織物構成包容關系中的種屬關系。 第二步:判斷選項詞…

DFS 回溯 【各種題型+對應LeetCode習題練習】

目錄 什么是深度優先搜索(DFS) DFS題型分類 DFS和回溯的關系 排列與組合 LeetCode 46 全排列 LeetCode 47 全排列 II LeetCode 39 組合總和 LeetCode 40 組合總和 II 子集 LeetCode 78 子集 LeetCode 90 子集 II 分割問題 LeetCode 131 分割…

大模型備案、算法備案補貼政策匯總【廣東地區】

廣州海珠 《廣州市海珠區建設人工智能大模型應用示范區實施細則的通知》規定,自 2024 年 6 月 18 日起至 2027 年 3 月 20 日,大規模企業首次完成國家級生成式人工智能(大語言模型)上線備案的,可獲得最高 100 萬元一次…

鴻蒙服務端開發資料匯總

文章目錄鴻蒙服務端開發資料匯總一、核心概念1.1 分布式架構1.2 微內核設計1.3 元服務架構二、技術棧2.1 開發語言2.2 開發框架與工具2.3 核心技術能力三、官方文檔與資源3.1 官方文檔3.2 示例代碼與開源資源四、應用案例4.1 政務領域4.2 金融領域4.3 交通出行4.4 企業辦公五、…

基于51單片機霍爾測速儀表測轉速調速系統設計

1 系統功能介紹 本設計為 基于51單片機霍爾測速儀表測轉速調速系統。系統以STC89C52單片機為核心,結合霍爾傳感器、LCD1602顯示模塊、電位器調速電路與電機驅動模塊,實現了對旋轉裝置的轉速檢測、數據顯示以及實時調節電機轉速的功能。 系統主要功能包括…

前端-初識Vue實例

一.準備容器 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head>…

基于FPGA的簡易醫療呼叫器實現,包含testbench

目錄 1.課題概述 2.系統測試效果 3.核心程序與模型 4.系統原理簡介 5.完整工程文件 1.課題概述 醫院護理呼叫系統是病人請求值班醫生或護士進行緊急處理或咨詢的工具&#xff0c;可將病人的請求快速傳送給值班醫生或護士。其基本功能就是通過一種簡便的途徑使護理對象與醫…

Maya綁定基礎:創建骨骼和蒙皮、蒙皮權重控制的兩種方法

目錄 1 創建骨骼和蒙皮 2 蒙皮權重控制 方法一 3 蒙皮權重控制 方法二 1 創建骨骼和蒙皮 新建一個圓柱體 把圓柱體拉長一點&#xff0c;調到前視圖 骨架--創建關節 同時選中骨骼和模型&#xff0c;菜單欄--蒙皮--綁定蒙皮 對關節進行旋轉 詳細的步驟參考這個鏈接&#xf…

【Settings】OTA 升級時更新 Settings 數據庫

一、問題描述 基于 Android 14平臺&#xff0c;隨著后續的 UI 更新需要將某個控制項的 Settings 值更新&#xff0c;需要更新 SettingsProvider 的值。二、問題分析 1. 定義一個 Settings 常量 frameworks/base/core/java/android/provider/Settings.java /*** Whether to use …

開發electron時候Chromium 報 Not allowed to load local resource → 空白頁。

報錯含義 主進程&#xff08;main.js&#xff09;里 win.loadFile()/win.loadURL() 指向了 file:///…/app.asar/build/index.html&#xff0c; 但打包后真正的文件位于 app.asar 內部&#xff0c;路徑拼錯&#xff0c;于是 Chromium 報 Not allowed to load local resource →…

Ethan獨立開發新品速遞 | 2025-08-30

每日精選Product Hunt上最值得關注的獨立產品&#xff0c;發現全球創新靈感&#xff0c;助力你的產品成長。 下面從今天的 Product Hunt 熱榜中篩選出對獨立開發者&#xff08;尤其是注重開發工具、AI 工具、SaaS 與創業工具&#xff09;的10個最有參考價值的項目。篩選標準側重…

【C++ 】string類操作全解析

1. 為什么學習 string 類&#xff1f; 1.1 C 語言中的字符串 C 語言中&#xff0c;字符串是以\0結尾的一些字符的集合&#xff0c;為了操作方便&#xff0c;C 標準庫中提供了一些 str 系列的庫函數&#xff0c;但是這些庫函數與字符串是分離開的&#xff0c;不太符合 OOP &…

DAY15-新世紀DL(DeepLearning/深度學習)戰士:破(超參數調試、Batch正則化和程序框架)3

本文參考文章0.0 目錄-深度學習第一課《神經網絡與深度學習》-Stanford吳恩達教授-CSDN博客 1.調試處理 神經網絡的改變會涉及到許多不同的超參數設置&#xff0c;現在&#xff0c;對于超參數而言&#xff0c;如何找到一套比較好的設定&#xff1f; 訓練深度最難的事之一是你…

Android 14 PMS源碼分析

源碼參考&#xff1a;Search (aospxref.com) 一、簡介 PackageManagerService&#xff08;簡稱 PMS&#xff09;&#xff0c;是 Android 系統核心服務之一&#xff0c;處理包管理相關的工作&#xff0c;常見的比如安裝、卸載應用等。本章針對SyetemServer、PMS構造方法重點模…

內省排序:相對最迅速的通用排序算法

&#x1f50d; 內省排序&#xff1a;相對最迅速的通用排序算法 &#x1f680; 前言&#xff1a;排序算法的演進之路 排序算法是計算機科學的核心基礎之一&#xff0c;其性能直接影響著數據庫系統、科學計算、圖形渲染等領域的效率。隨著硬件架構的發展&#xff0c;排序算法經歷…

Linux驅動開發重要操作匯總

本文主要記錄imx6ull的linux驅動開發過程中常用的一些操作。 uboot編譯 make ARCHarm CROSS_COMPILEarm-linux-gnueabihf- distclean make ARCHarm CROSS_COMPILEarm-linux-gnueabihf mx6ull_14x14_evk_emmc_defconfig make V1 ARCHarm CROSS_COMPILEarm-linux-gnueabihf- …