這章給大家介紹,如何封裝一個簡單的python庫
首先創建一個以下型式的文件結構
rootFile/setup.py
example_package/
__init__.py
example_module.py
example_package2/
__init__.py
example_module.py
其中的兩個__init__.py可以是一個空文件,但是它是導入package所必需的文件,用來,所以請務必創建,__init__.py中可以編寫Python代碼,但是不建議這么做,因為實際的邏輯可以在模塊中實現,__init__.py應盡量輕。
輸入在你的python文件中分別添加以下內容
#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是程序包的名稱。該名稱可以是任何名稱,只要僅包含字母、數字、 _ 和 - 。若您想將此程序包上傳至pypi.org,請務必使用您的用戶名進行更新,因為這樣可以確保您不會嘗試上傳與上傳軟件包時已經存在的軟件包名稱相同的軟件包。
version是軟件包的版本。
author和author_email用于標識軟件包的作者,分別用來標明作者名稱與郵箱。
description是該軟件包的簡短描述。
long_description是程序包的詳細說明。這在Python軟件包索引的軟件包詳細信息軟件包中顯示。在這種情況下,通常的模式是從README.md加載詳細描述。
long_description_content_type告訴索引用于長描述的標記類型,在此情況下,它是Markdown語言
packages是應該包含在分發軟件包中的所有Python導入軟件包的列表。無需手動列出每個程序包,我們可以使用find_packages()自動發現所有程序包和子程序包。以上示例我們使用了手動列出的方式。
classifiers為您的軟件包提供額外信息。
這時候,我們就可以著手將我們的package打包了
進入管理員環境下的命令行工具中,進入rootFile文件夾位置,可以復制下這個文件地址,cd進入。執行:
Python setup.py install
若命令行中打印出的信息顯示無誤,則您的package已經打包完成,我們在同一磁盤的其他文件夾中創建一個test.py進行測試
#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)
運行test.py
輸出:
>>> This ismy first module>>>jobsofferings>>>jobsofferings>>> This ismy second module>>>jobsofferings>>> jobsofferings
則說明您的package已經打包完成,由于通過包管理工具setuptools發布,您可以在您的python安裝目錄下找到這個打包文件,后綴為.egg,但egg包不一定是擴展名是egg的,其實在linux里面是不區分擴展名的。在理想情況中,egg 是一個使用zip 壓縮的文件,類似于java中的jar包,其中包括了所有需要的包文件。
您也可以在rootFile下找到這個egg文件,但事實上將dist文件夾刪掉之后,還是可以使用這個package,因為import導入的搜索路徑為程序主目錄、PYTHONPATH目錄、標準鏈接庫目錄、.pth文件目錄,所以程序會到您的python安裝目錄下找到這個打包文件。
進入命令行工具中,輸入where python可以找到您的python安裝路徑,進入./Lib/site-packages,在這個文件夾中就可以看到您的打包文件。