對於Python開發者來說,寫好代碼並不是唯一的步驟,還需要將代碼打包成模塊,並且加上依賴關係。這樣其他開發者在使用你的模塊時就可以更方便地調用並且避免重複造輪子。Python的標準庫中提供了setuptools,通過setup.py腳本可以製作出一個可發布的Python模塊並且管理依賴關係。
一、創建setup.py文件
要使用setuptools創建一個可發布的Python模塊,首先在項目根目錄下創建一個名為setup.py的文件。setup.py文件是用來描述Python模塊如何安裝、構建以及打包的腳本,簡單來說就是模塊的說明書。
from setuptools import setup, find_packages
setup(
name='example', # 模塊名
version='0.1', # 版本號
packages=find_packages(), # 包含的包
install_requires=['numpy>=1.16.6', 'pandas>=0.24.2'], # 依賴的第三方庫
test_suite='nose.collector',
tests_require=['nose'],
entry_points={
'console_scripts': [
'example = example.app:start'
]
},
classifiers=[
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
]
)
這裡導入了setuptools的setup()函數和find_packages()函數。setup()函數的參數包含了很多可以設置的選項,例如模塊名、版本號、包含的包、依賴關係、可執行文件等。
二、設置版本號
版本號是一個Python模塊最重要的元素之一。通過給模塊設置版本號,可以使你的代碼與其他依賴關係和版本號兼容的代碼一起工作,還可以根據需要更輕鬆地追蹤和管理你的代碼的進展。
設置版本號的通常方式是修改setup.py文件中的version參數,如下所示:
setup(
name='example',
version='0.1',
# ...
)
版本號通常由兩個邏輯部分構成:主版本號和次版本號。主版本號通常表示代碼中引入了重大變化或不向後兼容的更改,而次版本號通常表示一些小的增強、重構或者錯誤修復。
三、依賴管理
依賴管理是打包Python模塊時必不可少的一部分。一般來說,一個Python模塊可能會依賴於其他的第三方模塊,這些模塊需要在安裝前先安裝。
可以在setup.py的install_requires選項中聲明你的Python模塊的依賴項,例如:
setup(
name='example',
version='0.1',
install_requires=['numpy>=1.16.6', 'pandas>=0.24.2'],
# ...
)
這裡聲明了numpy和pandas兩個第三方庫的依賴,且要求版本號不低於某個值。
四、生成可執行文件
有時,一個Python模塊可以生成可執行文件。例如,一些工具可以在命令行中運行,而不是直接運行Python代碼。在Python中,可以使用setuptools的entry_points選項來定義一個可執行文件。
下面是一個例子:
setup(
name='example',
version='0.1',
# ...
entry_points={
'console_scripts': [
'example = example.app:start'
]
},
# ...
)
這裡,我們將example.app:start作為可執行文件的入口點。一旦模塊被安裝,用戶就可以運行example作為命令,並調用到example模塊的start()函數。
五、構建和發布Python模塊
在設置好setup.py文件後,可以使用setuptools來構建和發布Python模塊了。要構建模塊,請在命令行中進入包含setup.py文件的目錄,並執行以下命令:
python setup.py sdist
這將創建一個源分發包(.tar.gz)。如果同時也想為其他操作系統和Python版本構建二進制分發包(.whl),可以使用以下命令:
python setup.py bdist_wheel
最後,通過如下命令上傳分發包到PyPI:
twine upload dist/*
其中,twine是PyPI官方的上傳工具。在執行此命令前,請確保你已在PyPI上註冊了帳戶。
六、總結
Python的setuptools是一個非常方便的打包工具,不僅能夠管理依賴關係,還能方便地發布Python模塊。一個好的Python模塊應該是易於安裝、易於調用,而設置好的setup.py文件就是實現這些目標的重要一環。
原創文章,作者:KVUP,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/135941.html