自制python包并通過pip上傳pypi
導(dǎo)讀
平時寫Python,需要用到一個新包時,習(xí)慣了pip install packageName,寫多了就會想,這些包都是怎么來的?自己能不能"制作"一個,任何人也都可以通過pip安裝?
有此想法,躬行實踐.答案顯然是肯定的,而且難度也絕沒有想的那樣大,或者說 It is easy
.
1.編寫代碼
如要制作的包名為dashen
,新建如下目錄結(jié)構(gòu)
- 其中兩個
__init__.py
為空即可 - README.md寫一些該package的介紹,非必選
your_func.py
是具體的功能實現(xiàn),在此示例如下:
def dashen_address(): print('www.dashen.tech') def dashen_master(): print('shuang.cui') def author_hometown(): print('山東鄒平')
setup.py
內(nèi)容如下:
import setuptools with open("README.md","r") as fh: long_description = fh.read() setuptools.setup( # 包的分發(fā)名稱,使用字母、數(shù)字、_、- name="dashen", # 版本號, 版本號規(guī)范:https://www.python.org/dev/peps/pep-0440/ version="0.0.1", # 作者名 author="fliter", # 作者郵箱 author_email="i@dashen.tech", # 包的簡介描述 description="我的第二個python包", # 包的詳細(xì)介紹(一般通過加載README.md) long_description=long_description, # 和上條命令配合使用,聲明加載的是markdown文件 long_description_content_type="text/markdown", # 項目開源地址 url="https://dashen.tech", # 如果項目由多個文件組成,我們可以使用find_packages()自動發(fā)現(xiàn)所有包和子包,而不是手動列出每個包,在這種情況下,包列表將是example_pkg packages=setuptools.find_packages(), # 關(guān)于包的其他元數(shù)據(jù)(metadata) classifiers=[ # 該軟件包僅與Python3兼容 "Programming Language :: Python :: 3", # 根據(jù)MIT許可證開源 "License :: OSI Approved :: MIT License", # 與操作系統(tǒng)無關(guān) "Operating System :: OS Independent", ], )
2.賬號注冊及打包
- 注冊Pypi
- 更新pip,setuptools和wheel
pip install --upgrade pip setuptools wheel
- 切換到setup.py的同級目錄,進(jìn)行打包
python setup.py sdist
會出現(xiàn)兩個新文件
3.上傳
上傳Pypi
pip install twine
(如果已經(jīng)安裝twine,跳過此步驟)
python -m twine upload dist/*
輸入Pypi的賬號及密碼
4.查看及檢驗
以上就是制作python包并通過pip上傳pypi的詳細(xì)內(nèi)容,更多關(guān)于python包pip上傳pypi的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python 分布式緩存之Reids數(shù)據(jù)類型操作詳解
這篇文章主要介紹了Python 分布式緩存之Reids數(shù)據(jù)類型操作詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06Python 使用 PyMysql、DBUtils 創(chuàng)建連接池提升性能
DBUtils 是一套 Python 數(shù)據(jù)庫連接池包,并允許對非線程安全的數(shù)據(jù)庫接口進(jìn)行線程安全包裝。這篇文章主要介紹了Python 使用 PyMysql、DBUtils 創(chuàng)建連接池,提升性能,需要的朋友可以參考下2019-08-08