python封装介绍_谈python3的封装
這章給大家介紹,如何封裝一個(gè)簡單的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是該軟件包的簡短描述。
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的封装的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python框架是干什么的_django
- 下一篇: 7日年化收益率2%是什么意思