pypi 賬號(hào)注冊(cè)
- 注冊(cè)
https://pypi.org/account/register
- 添加API tokens
目前安全要求吝梅,上傳包不允許直接使用賬號(hào)密碼(以前是可以的厅克,網(wǎng)上大部分教程也是直接使用賬號(hào)密碼上傳)
制作python包
做個(gè)簡(jiǎn)單的python庫(kù)兴泥,里面有四個(gè)文件,分別是setup.py
抖剿、mypackage/__init__.py
、mypackage/mypackage.py
、README.md
- setup.py
setup.py 是庫(kù)的重點(diǎn)荚坞,里面詳細(xì)描述庫(kù)的信息墨闲,setuptools根據(jù)setup.py將庫(kù)打包今妄。
示例:
import os
from setuptools import setup
from setuptools import find_packages
with open(os.path.join(os.path.dirname(__file__), 'README.md')) as readme:
README = readme.read()
VERSION = '0.1.1'
setup(
name='mypackage', # package name
version=VERSION, # package version
description='mypackage description',
author='wwdeng',
author_email='xx@gmail.com',
install_requires=['episcanpy==0.3.1','scanpy'],
long_description=README,
long_description_content_type='text/markdown',
package_data={'': ['data/*']}, # 包的自帶數(shù)據(jù)
classifiers=[
'License :: OSI Approved :: MIT License',
'Programming Language :: Python :: 3.10',
'Programming Language :: Python :: 3.9',
'Programming Language :: Python :: 3.8',
],
packages=find_packages(),
}
)
說(shuō)明:
- version:這個(gè)簡(jiǎn)單,就是包的發(fā)布的版本鸳碧,可以直接寫(xiě)在這盾鳞,也可以從其他地方引用過(guò)來(lái)。
- long_description:必須是rst(reStructuredText )格式的瞻离,因?yàn)檫@個(gè)里面的內(nèi)容是顯示在pypi包首頁(yè)上腾仅,我的long_description是同目錄下的README.rst的內(nèi)容,同時(shí)這個(gè)README也是我的github項(xiàng)目首頁(yè)套利。
- packages:申明你的包里面要包含的目錄推励,比如 ['mypackage', 'mypackage_test'] 可以是這種使用我的示例,讓setuptools自動(dòng)決定要包含哪些包
- install_requires:申明依賴(lài)包肉迫,安裝包時(shí)pip會(huì)自動(dòng)安裝:格式如下(我上面的setup.py沒(méi)有這個(gè)參數(shù)验辞,因?yàn)槲也灰蕾?lài)第三方包:)):
【推薦】大名鼎鼎的requests庫(kù)的作者大神kennethreitz為大家準(zhǔn)備了一個(gè)倉(cāng)庫(kù)作為一個(gè)setup.py的很好的模板:https://github.com/kennethreitz/setup.py
mypackage/__init__.py
__init__.py
表明mypackage是個(gè)包
name="mypackage"
-
mypackage/mypackage.py
mypackage/mypackage.py
僅為一個(gè)示例,實(shí)際中所有包里面的函數(shù)都可以放在mypackage
文件夾下
- README.md
README.md 用于描述這個(gè)庫(kù)喊衫,在setup.py做為長(zhǎng)描述使用
打包上傳
- 安裝必要的打包工具庫(kù)
pip install setuptools wheel twine
setuptools 是打包工具, 是 distutils 增強(qiáng)版跌造,不包括在標(biāo)準(zhǔn)庫(kù)中。其擴(kuò)展了很多功能族购,能夠幫助開(kāi)發(fā)者更好的創(chuàng)建和分發(fā) Python 包壳贪。大部分 Python 用戶(hù)都會(huì)使用更先進(jìn)的 setuptools 模塊。
wheel 庫(kù)安裝后可以打包成whl的包联四。Egg 格式是由 setuptools 在 2004 年引入撑碴,而 Wheel 格式是由 PEP427 在 2012 年定義。Wheel 的出現(xiàn)是為了替代 Egg朝墩,它的本質(zhì)是一個(gè)zip包醉拓,其現(xiàn)在被認(rèn)為是 Python 的二進(jìn)制包的標(biāo)準(zhǔn)格式伟姐。
- 將編寫(xiě)的庫(kù)安裝測(cè)試一下是否正常
python setup.py develop
- 打包
# 在當(dāng)前目錄的dist文件夾下,生成一個(gè)以tar.gz結(jié)尾的包
python setup.py sdist build
# 在dist文件夾下生成一個(gè)whl格式的包
python setup.py bdist_wheel --universal
- 上傳
twine 用于上傳包到pypi
twine upload dist/*
參考
https://blog.csdn.net/dreamblog/article/details/132659002
https://codeantenna.com/a/uEd3D2itku
https://github.com/kennethreitz/setup.py/blob/master/setup.py