如何使用uv構(gòu)建Python包并本地安裝步驟詳解
前言
本文將逐步指導(dǎo)你創(chuàng)建一個簡單的 Python 包,并將其本地安裝到機(jī)器或云環(huán)境中。完成本教程后,你將擁有一個可復(fù)用的 Python 庫,可直接通過 pip
安裝或在項(xiàng)目中導(dǎo)入使用。
步驟詳解
Step 0: 選擇構(gòu)建工具 - 使用 uv
推薦理由:
uv
是類似poetry
的現(xiàn)代打包工具,默認(rèn)使用hatchling
作為構(gòu)建后端,支持 PEP 517/518 標(biāo)準(zhǔn)。安裝方法:
# 通過 Homebrew 安裝(MacOS) brew install uv # 或直接通過 PyPI pip install uv
Step 1: 創(chuàng)建包目錄結(jié)構(gòu)
使用 uv
快速初始化項(xiàng)目結(jié)構(gòu):
uv init --lib my-package
生成后的目錄如下:
my_package/ ├── src/ │ └── my_package/ │ ├── __init__.py # 標(biāo)記為 Python 包 │ └── your_code.py # 存放核心代碼 │ └── py.typed # 類型標(biāo)注聲明(可選) ├── pyproject.toml # 項(xiàng)目元數(shù)據(jù)和依賴配置 ├── README.md # 項(xiàng)目文檔 └── .python-version # 指定 Python 版本
Step 2: 編寫包代碼
在 src/my_package/your_code.py
中添加功能代碼:
# my_package/your_code.py def greet(name: str) -> str: """返回問候語""" return f"Hello, {name}!"
Step 3: 配置 pyproject.toml
填寫項(xiàng)目元數(shù)據(jù)和依賴項(xiàng):
[project] name = "my-package" version = "0.1.0" description = "一個簡單的本地 Python 包示例" readme = "README.md" authors = [{ name = "Sarah Glasmacher", email = "sarah@example.com" }] requires-python = ">=3.11" dependencies = [] [build-system] requires = ["hatchling"] build-backend = "hatchling.build"
Step 4: 構(gòu)建分發(fā)包
運(yùn)行以下命令生成 .whl
或 .tar.gz
文件:
uv build
構(gòu)建完成后,dist/
目錄下會生成類似以下的文件:
dist/ ├── my_package-0.1.0-py3-none-any.whl └── my_package-0.1.0.tar.gz
Step 5: 本地安裝包
方法 1:直接安裝構(gòu)建產(chǎn)物
pip install dist/my_package-0.1.0-py3-none-any.whl
方法 2:以編輯模式安裝(實(shí)時同步代碼)
pip install -e .
Step 6: 測試安裝
打開 Python 終端驗(yàn)證:
from my_package.your_code import greet print(greet("World")) # 輸出:Hello, World!
關(guān)鍵注意事項(xiàng)
- 模塊化設(shè)計:將代碼按功能拆分為獨(dú)立模塊,便于維護(hù)和復(fù)用。
- 依賴管理:通過
dependencies
字段聲明依賴,或使用uv add <package>
自動更新pyproject.toml
。 - 版本控制:每次發(fā)布新版本前更新
version
字段,避免沖突。
擴(kuò)展應(yīng)用場景
- 云部署:將打包后的代碼上傳至 Databricks 或 AWS Lambda,直接調(diào)用云端計算資源。
- 協(xié)作開發(fā):通過 PyPI 發(fā)布包(需額外配置),團(tuán)隊(duì)成員可直接
pip install
同步代碼。
通過本文,你已掌握 Python 包的基礎(chǔ)構(gòu)建和本地安裝流程。下一階段可嘗試 將包發(fā)布到 PyPI,實(shí)現(xiàn)全球范圍內(nèi)的代碼共享!
總結(jié)
到此這篇關(guān)于如何使用uv構(gòu)建Python包并本地安裝的文章就介紹到這了,更多相關(guān)uv構(gòu)建Python包并本地安裝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在django中使用自定義標(biāo)簽實(shí)現(xiàn)分頁功能
這篇文章主要介紹了在django中使用自定義標(biāo)簽實(shí)現(xiàn)分頁功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07Python將文字轉(zhuǎn)成語音并讀出來的實(shí)例詳解
今天小編就為大家分享一篇Python將文字轉(zhuǎn)成語音并讀出來的實(shí)例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07淺談Python中用datetime包進(jìn)行對時間的一些操作
下面小編就為大家?guī)硪黄獪\談Python中用datetime包進(jìn)行對時間的一些操作。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06python的構(gòu)建工具setup.py的方法使用示例
本篇文章主要介紹了python的構(gòu)建工具setup.py的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10python使用pandas實(shí)現(xiàn)篩選功能方式
在數(shù)據(jù)分析的過程中通常要對數(shù)據(jù)進(jìn)行清洗與處理,而其中比較重要和常見的操作就有對數(shù)據(jù)進(jìn)行篩選與查詢,下面這篇文章主要給大家介紹了關(guān)于python使用pandas實(shí)現(xiàn)篩選功能方式的相關(guān)資料,需要的朋友可以參考下2022-06-06np.meshgrid中的indexing參數(shù)問題解決
本文主要介紹了np.meshgrid中的indexing參數(shù)問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03關(guān)于Python中的if __name__ == __main__詳情
在學(xué)習(xí)Python的過程中發(fā)現(xiàn)即使把if __name__ == ‘__main__’ 去掉,程序還是照樣運(yùn)行。很多小伙伴只知道是這么用的,也沒有深究具體的作用。這篇文字就來介紹一下Python中的if __name__ == ‘__main__’的作用,需要的朋友參考下文2021-09-09Webots下載安裝?+?Pycharm聯(lián)調(diào)使用教程
Webots是一個開源的三維移動機(jī)器人模擬器,它最初是作為研究移動機(jī)器人中各種控制算法的研究工具開發(fā)的,自2018年12月起,Webots作為開源軟件發(fā)布,并獲得Apache 2.0許可證,這篇文章主要介紹了Webots下載安裝?+?Pycharm聯(lián)調(diào)?,需要的朋友可以參考下2023-02-02