日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

Python打包,setuptools打包六步法

來源: 責(zé)編: 時(shí)間:2024-05-07 09:09:53 161觀看
導(dǎo)讀引言:為什么要學(xué)習(xí)Python模塊打包與分發(fā)在Python的世界里,模塊化開發(fā)是提高代碼復(fù)用性和協(xié)作效率的關(guān)鍵。當(dāng)你精心打造了一個(gè)功能完備、設(shè)計(jì)優(yōu)雅的模塊,自然希望它不僅能服務(wù)于當(dāng)前項(xiàng)目,還能在其他場(chǎng)景中大放異彩。這時(shí),打

引言:為什么要學(xué)習(xí)Python模塊打包與分發(fā)

在Python的世界里,模塊化開發(fā)是提高代碼復(fù)用性和協(xié)作效率的關(guān)鍵。當(dāng)你精心打造了一個(gè)功能完備、設(shè)計(jì)優(yōu)雅的模塊,自然希望它不僅能服務(wù)于當(dāng)前項(xiàng)目,還能在其他場(chǎng)景中大放異彩。這時(shí),打包與分發(fā)你的模塊就顯得尤為重要。通過打包,你可以將模塊整理成符合標(biāo)準(zhǔn)的文件結(jié)構(gòu),方便他人安裝和使用。而分發(fā),則能讓全世界的Python開發(fā)者在PyPI(Python Package Index)這樣的平臺(tái)上找到并下載你的模塊。qFm28資訊網(wǎng)——每日最新資訊28at.com

今天,我們就來學(xué)習(xí)如何使用Python中最常用的打包工具——setuptools,通過六個(gè)簡(jiǎn)單步驟,讓你的模塊從本地走向世界!qFm28資訊網(wǎng)——每日最新資訊28at.com

qFm28資訊網(wǎng)——每日最新資訊28at.com

第一步:理解setuptools及其作用

setuptools是Python生態(tài)中用于創(chuàng)建和管理軟件包的神器。它提供了一套標(biāo)準(zhǔn)流程,幫助我們將源代碼、依賴項(xiàng)、文檔等打包成符合Python打包規(guī)范(如wheel或tar.gz格式)的文件。同時(shí),setuptools還支持生成易于安裝的腳本,使得用戶只需一條簡(jiǎn)單的命令,就能在自己的環(huán)境中安裝你的模塊。qFm28資訊網(wǎng)——每日最新資訊28at.com

第二步:初始化項(xiàng)目與編寫setup.py

(1) 創(chuàng)建項(xiàng)目目錄結(jié)構(gòu)qFm28資訊網(wǎng)——每日最新資訊28at.com

首先,我們需要為模塊創(chuàng)建一個(gè)整潔的目錄結(jié)構(gòu)。一個(gè)典型的Python打包項(xiàng)目通常包含如下部分:qFm28資訊網(wǎng)——每日最新資訊28at.com

your_package/├── your_package/│   ├── __init__.py│   └── your_code.py├── tests/│   ├── __init__.py│   └── test_your_code.py├── setup.py├── setup.cfg└── MANIFEST.in

其中,your_package目錄存放你的模塊代碼,tests目錄存放單元測(cè)試代碼,setup.py是打包配置腳本,setup.cfg和MANIFEST.in用于輔助打包過程。qFm28資訊網(wǎng)——每日最新資訊28at.com

(2) 編寫setup.py文件qFm28資訊網(wǎng)——每日最新資訊28at.com

接下來,我們來編寫setup.py。這個(gè)腳本是setuptools的核心入口,定義了模塊的基本信息和打包規(guī)則。qFm28資訊網(wǎng)——每日最新資訊28at.com

from setuptools import setupsetup(    name='your_package',  # 模塊名稱    version='0.1.0',      # 版本號(hào)    packages=['your_package'],  # 包含的Python包    python_requires='>=3.9',  # 支持的Python版本    install_requires=[],  # 依賴的外部庫    author='Your Name',  # 作者信息    author_email='you@example.com',    description='A fantastic Python module!',  # 簡(jiǎn)短描述    long_description=open('README.md', 'r').read(),  # 長(zhǎng)描述(通常讀取自README文件)    long_description_content_type='text/markdown',  # 長(zhǎng)描述類型    url='https://github.com/your_username/your_package',  # 項(xiàng)目主頁    classifiers=[  # 項(xiàng)目分類標(biāo)簽        'Programming Language :: Python :: 3',        'License :: OSI Approved :: MIT License',        'Operating System :: OS Independent',    ],)

(3) 解析setup()函數(shù)參數(shù)qFm28資訊網(wǎng)——每日最新資訊28at.com

上述setup()函數(shù)的參數(shù)意義如下:qFm28資訊網(wǎng)——每日最新資訊28at.com

  • name:模塊的名稱,應(yīng)遵循PEP8命名規(guī)范。
  • version:模塊的版本號(hào),遵循語義化版本控制規(guī)范(如1.2.3)。
  • packages:包含的Python包列表,這里指your_package目錄。
  • python_requires:模塊支持的Python版本范圍。
  • install_requires:模塊運(yùn)行所需的外部庫列表,以字符串形式給出。
  • author、author_email:作者信息。
  • description:簡(jiǎn)短的模塊描述,展示在PyPI頁面上。
  • long_description、long_description_content_type:詳細(xì)的模塊介紹,通常從README文件讀取。內(nèi)容類型標(biāo)明為Markdown。
  • url:項(xiàng)目的GitHub或其他托管平臺(tái)鏈接。
  • classifiers:模塊所屬的類別和標(biāo)簽,便于在PyPI上搜索和篩選。

第三步:定義setup.cfg與MANIFEST.in

(1) setup.cfg的作用與內(nèi)容qFm28資訊網(wǎng)——每日最新資訊28at.com

setup.cfg是一個(gè)INI格式的配置文件,用于存儲(chǔ)一些常見且不太可能頻繁變動(dòng)的設(shè)置。例如,我們可以將setup.py中的install_requires移到這里:qFm28資訊網(wǎng)——每日最新資訊28at.com

[options]install_requires =    dependency1 >= 1.0    dependency2 == 2.5

這樣做可以使setup.py更簡(jiǎn)潔,也方便持續(xù)集成等自動(dòng)化流程直接讀取依賴關(guān)系。qFm28資訊網(wǎng)——每日最新資訊28at.com

(2) MANIFEST.in的作用與示例配置qFm28資訊網(wǎng)——每日最新資訊28at.com

MANIFEST.in用于指定哪些非.py文件(如數(shù)據(jù)文件、LICENSE、README等)應(yīng)包含在打包結(jié)果中。例如:qFm28資訊網(wǎng)——每日最新資訊28at.com

include README.mdinclude LICENSErecursive-include your_package/data *.csv

這表示將README.md、LICENSE文件以及your_package/data目錄下所有的.csv文件納入打包范圍。qFm28資訊網(wǎng)——每日最新資訊28at.com

第四步:編寫模塊與測(cè)試代碼

(1) 模塊代碼結(jié)構(gòu)與規(guī)范qFm28資訊網(wǎng)——每日最新資訊28at.com

在your_package目錄下編寫你的模塊代碼。確保每個(gè)子模塊都有一個(gè)__init__.py文件,以便它們被視為Python包。遵循PEP8編碼規(guī)范,編寫清晰的函數(shù)和類,添加必要的文檔字符串。qFm28資訊網(wǎng)——每日最新資訊28at.com

(2) 編寫單元測(cè)試用例qFm28資訊網(wǎng)——每日最新資訊28at.com

在tests目錄下編寫單元測(cè)試,使用如unittest、pytest等測(cè)試框架。確保覆蓋模塊的主要功能,為用戶提供高質(zhì)量、可信賴的代碼。qFm28資訊網(wǎng)——每日最新資訊28at.com

第五步:打包與安裝

() 使用python setup.py sdist命令打包qFm28資訊網(wǎng)——每日最新資訊28at.com

在項(xiàng)目根目錄下執(zhí)行:qFm28資訊網(wǎng)——每日最新資訊28at.com

python setup.py sdist

這將生成一個(gè).tar.gz文件(如dist/your_package-0.1.0.tar.gz),包含了項(xiàng)目的所有源碼、配置文件和指定的額外文件。qFm28資訊網(wǎng)——每日最新資訊28at.com

(2) 使用pip install dist/your_package.tar.gz安裝qFm28資訊網(wǎng)——每日最新資訊28at.com

在另一臺(tái)機(jī)器或虛擬環(huán)境中,通過以下命令安裝打包好的模塊:qFm28資訊網(wǎng)——每日最新資訊28at.com

pip install dist/your_package-0.1.0.tar.gz

安裝成功后,即可在該環(huán)境中導(dǎo)入并使用你的模塊。qFm28資訊網(wǎng)——每日最新資訊28at.com

第六步:發(fā)布到PyPI

(1) 注冊(cè)PyPI賬號(hào)qFm28資訊網(wǎng)——每日最新資訊28at.com

訪問https://pypi.org/,使用郵箱注冊(cè)一個(gè)賬號(hào)。記住用戶名和密碼,后續(xù)會(huì)用到。qFm28資訊網(wǎng)——每日最新資訊28at.com

(2) 配置twine工具qFm28資訊網(wǎng)——每日最新資訊28at.com

twine是一個(gè)安全、便捷的Python包上傳工具。在終端中安裝:qFm28資訊網(wǎng)——每日最新資訊28at.com

pip install twine

(3) 使用twine upload dist/*上傳包qFm28資訊網(wǎng)——每日最新資訊28at.com

登錄PyPI賬號(hào)后,回到項(xiàng)目根目錄,執(zhí)行以下命令上傳打包好的模塊:qFm28資訊網(wǎng)——每日最新資訊28at.com

twine upload dist/*

按照提示輸入PyPI用戶名和密碼(或使用API令牌)。上傳成功后,你的模塊就會(huì)出現(xiàn)在PyPI倉庫中,全球的Python開發(fā)者都可以通過pip install your_package來安裝它了!qFm28資訊網(wǎng)——每日最新資訊28at.com

結(jié)語:總結(jié)與進(jìn)階學(xué)習(xí)建議

恭喜你!通過以上六個(gè)步驟,你已經(jīng)掌握了使用setuptools打包和分發(fā)Python模塊的全過程。繼續(xù)探索Python打包的更多高級(jí)特性,如 wheel 文件、版本控制、自動(dòng)化部署等,讓你的模塊在開源社區(qū)中更具影響力。qFm28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-86992-0.htmlPython打包,setuptools打包六步法

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 使用 Google Wire 在 Go 中進(jìn)行依賴注入

下一篇: 遞歸反轉(zhuǎn)句子:C# 編程技術(shù)探究

標(biāo)簽:
  • 熱門焦點(diǎn)
  • Find N3入網(wǎng):最高支持16+1TB

    OPPO將于近期登場(chǎng)的Find N3折疊屏目前已經(jīng)正式入網(wǎng),型號(hào)為PHN110。本次Find N3在外觀方面相比前兩代有很大的變化,不再是小號(hào)的橫向折疊屏,而是跟別的廠商一樣采用了較為常見的
  • Mate60手機(jī)殼曝光 致敬自己的經(jīng)典設(shè)計(jì)

    8月3日消息,今天下午博主數(shù)碼閑聊站帶來了華為Mate60的第三方手機(jī)殼圖,可以讓我們?cè)谡鏅C(jī)發(fā)布之前看看這款華為全新旗艦的大致輪廓。從曝光的圖片看,Mate 60背后攝像頭面積依然
  • 影音體驗(yàn)是真的強(qiáng) 簡(jiǎn)單聊聊iQOO Pad

    大公司的好處就是產(chǎn)品線豐富,非常細(xì)分化的東西也能給你做出來,例如早先我們看到了新的vivo Pad2,之后我們又在iQOO Neo8 Pro的發(fā)布會(huì)上看到了iQOO的首款平板產(chǎn)品iQOO Pad。雖
  • 帥氣純真少年!日本最帥初中生選美冠軍出爐

    日本第一帥哥初一生選美大賽冠軍現(xiàn)已正式出爐,冠軍是來自千葉縣的宗田悠良。日本一直熱衷于各種選美大賽,從“最美JK”起到“最美女星&r
  • 這款新興工具平臺(tái),讓你的電腦效率翻倍

    隨著信息技術(shù)的發(fā)展,我們獲取信息的渠道越來越多,但是處理信息的效率卻成為一個(gè)瓶頸。于是各種工具應(yīng)運(yùn)而生,都在爭(zhēng)相解決我們的工作效率問題。今天我要給大家介紹一款效率
  • 小米MIX Fold 3下月亮相:今年唯一無短板的全能折疊屏

    這段時(shí)間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都有新的進(jìn)展,其中榮耀、三星都已陸續(xù)發(fā)布了最新的折疊屏旗艦,尤其號(hào)榮耀Magi
  • 三星折疊屏手機(jī)去年銷售近1000萬臺(tái) 今年目標(biāo)定為1500萬

    7月29日消息,三星率先發(fā)力可折疊手機(jī)市場(chǎng),在全球市場(chǎng)已經(jīng)取得了非常亮眼的成績(jī),接下來會(huì)進(jìn)一步鞏固和擴(kuò)大這一優(yōu)勢(shì)。三星在推出Galaxy Z Flip5和Galax
  • Android 14發(fā)布:首批適配機(jī)型公布

    5月11日消息,谷歌在今天凌晨舉行了I/O大會(huì),本次發(fā)布會(huì)谷歌帶來了自家的AI語言模型PaLM 2、谷歌Pixel Fold折疊屏、谷歌Pixel 7a手機(jī),同時(shí)發(fā)布了Androi
  • “買真退假” 這種“羊毛”不能薅

    □ 法治日?qǐng)?bào) 記者 王春   □ 本報(bào)通訊員 胡佳麗  2020年初,還在上大學(xué)的小東加入了一個(gè)大學(xué)生兼職QQ群。群主“七王”在群里介紹一些刷單賺
Top 主站蜘蛛池模板: 门源| 江门市| 霍山县| 孝昌县| 蓝田县| 保德县| 扎赉特旗| 霍城县| 晋江市| 贵南县| 交城县| 思南县| 磴口县| 滕州市| 澜沧| 泉州市| 寻乌县| 青海省| 焉耆| 香河县| 石台县| 桓台县| 微山县| 古田县| 临高县| 开封市| 沛县| 封丘县| 舞阳县| 黑龙江省| 五家渠市| 纳雍县| 龙泉市| 伊宁县| 威远县| 漠河县| 曲水县| 五原县| 武宁县| 吉林市| 内乡县|