日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python封装介绍_谈python3的封装

發(fā)布時(shí)間:2025/3/8 python 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python封装介绍_谈python3的封装 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這章給大家介紹,如何封裝一個(gè)簡(jiǎn)單的python庫

首先創(chuàng)建一個(gè)以下型式的文件結(jié)構(gòu)

rootFile/setup.py

example_package/

__init__.py

example_module.py

example_package2/

__init__.py

example_module.py

其中的兩個(gè)__init__.py可以是一個(gè)空文件,但是它是導(dǎo)入package所必需的文件,用來,所以請(qǐng)務(wù)必創(chuàng)建,__init__.py中可以編寫Python代碼,但是不建議這么做,因?yàn)閷?shí)際的邏輯可以在模塊中實(shí)現(xiàn),__init__.py應(yīng)盡量輕。

輸入在你的python文件中分別添加以下內(nèi)容

#rootFile/example_package/example_module.py:

classmodule_class:def __init__(self):pass

defprint_hello():print('This is my first module')

myName= 'jobsofferings'

defprintMyName():print(myName)

#rootFile/example_package/example_package2/example_module.py:

classmodule_class:def __init__(self):pass

defprint_hello():print('This is my second module')

myName= 'jobsofferings'

defprintMyName():print(myName)

#setup.py:

importsetuptools

setuptools.setup(

name="rootFile",

version="0.0.1",

author="jobsofferings",

author_email="youremail@xxx.com",

description="example package",

packages=['example_package','example_package.example_package2'],

)

name是程序包的名稱。該名稱可以是任何名稱,只要僅包含字母、數(shù)字、 _ 和 - 。若您想將此程序包上傳至pypi.org,請(qǐng)務(wù)必使用您的用戶名進(jìn)行更新,因?yàn)檫@樣可以確保您不會(huì)嘗試上傳與上傳軟件包時(shí)已經(jīng)存在的軟件包名稱相同的軟件包。

version是軟件包的版本。

author和author_email用于標(biāo)識(shí)軟件包的作者,分別用來標(biāo)明作者名稱與郵箱。

description是該軟件包的簡(jiǎn)短描述。

long_description是程序包的詳細(xì)說明。這在Python軟件包索引的軟件包詳細(xì)信息軟件包中顯示。在這種情況下,通常的模式是從README.md加載詳細(xì)描述。

long_description_content_type告訴索引用于長描述的標(biāo)記類型,在此情況下,它是Markdown語言

packages是應(yīng)該包含在分發(fā)軟件包中的所有Python導(dǎo)入軟件包的列表。無需手動(dòng)列出每個(gè)程序包,我們可以使用find_packages()自動(dòng)發(fā)現(xiàn)所有程序包和子程序包。以上示例我們使用了手動(dòng)列出的方式。

classifiers為您的軟件包提供額外信息。

這時(shí)候,我們就可以著手將我們的package打包了

進(jìn)入管理員環(huán)境下的命令行工具中,進(jìn)入rootFile文件夾位置,可以復(fù)制下這個(gè)文件地址,cd進(jìn)入。執(zhí)行:

Python setup.py install

若命令行中打印出的信息顯示無誤,則您的package已經(jīng)打包完成,我們?cè)谕淮疟P的其他文件夾中創(chuàng)建一個(gè)test.py進(jìn)行測(cè)試

#test.py:

importexample_package.example_module as module1importexample_package.example_package2.example_module as module2

module1.module_class.print_hello()

module1.printMyName()print(module1.myName)

module2.module_class.print_hello()

module2.printMyName()print(module2.myName)

運(yùn)行test.py

輸出:

>>> This ismy first module>>>jobsofferings>>>jobsofferings>>> This ismy second module>>>jobsofferings>>> jobsofferings

則說明您的package已經(jīng)打包完成,由于通過包管理工具setuptools發(fā)布,您可以在您的python安裝目錄下找到這個(gè)打包文件,后綴為.egg,但egg包不一定是擴(kuò)展名是egg的,其實(shí)在linux里面是不區(qū)分?jǐn)U展名的。在理想情況中,egg 是一個(gè)使用zip 壓縮的文件,類似于java中的jar包,其中包括了所有需要的包文件。

您也可以在rootFile下找到這個(gè)egg文件,但事實(shí)上將dist文件夾刪掉之后,還是可以使用這個(gè)package,因?yàn)閕mport導(dǎo)入的搜索路徑為程序主目錄、PYTHONPATH目錄、標(biāo)準(zhǔn)鏈接庫目錄、.pth文件目錄,所以程序會(huì)到您的python安裝目錄下找到這個(gè)打包文件。

進(jìn)入命令行工具中,輸入where python可以找到您的python安裝路徑,進(jìn)入./Lib/site-packages,在這個(gè)文件夾中就可以看到您的打包文件。

總結(jié)

以上是生活随笔為你收集整理的python封装介绍_谈python3的封装的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。