准备工作
- 拥有一个 PyPI · The Python Package Index 的账号
- 已经写好能正常使用的库/方法/项目 (可本地调用)
- 库/方法/项目的结构如下图所示:
str2_md5 # 该目录名称随便取
├── LICENSE # 可选
├── README.md # 可选
├── str2_md5 # 该Package名称随便取,该目录用于存放我们已经写好能正常使用的库/方法/项目
│ ├── str2_md5.py # 该文件文主方法文件,自己编写即可
│ └── __init__.py # 作用参考:https://www.php.cn/python-tutorials-420226.html
└── setup.py # 参考下文讲解
代码详情
setup.py
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="debug-world", # 包的分发名称,使用字母、数字、_、-
version="0.0.1", # 版本号, 版本号规范:https://www.python.org/dev/peps/pep-0440/
author="jacks", # 作者名字
author_email="author@example.com", # 作者邮箱
description="PyPI Tutorial", # 包的简介描述
long_description=long_description, # 包的详细介绍(一般通过加载README.md)
long_description_content_type="text/markdown", # 和上条命令配合使用,声明加载的是markdown文件
url="https://github.com/xxx", # 项目开源地址
packages=setuptools.find_packages(), # 如果项目由多个文件组成,我们可以使用find_packages()自动发现所有包和子包,而不是手动列出每个包,在这种情况下,包列表将是example_pkg
classifiers=[ # 关于包的其他元数据(metadata)
"Programming Language :: Python :: 3", # 该软件包仅与Python3兼容
"License :: OSI Approved :: MIT License", # 根据MIT许可证开源
"Operating System :: OS Independent", # 与操作系统无关
],
install_requires=['pymysql>=0.10.0', 'retrying==1.3.3', 'xlrd>=1.2.0', 'openpyxl>=3.0.5'], # 依赖的包
python_requires='>=3'
)
# 这是最简单的配置
# 有关详细信息,请参阅(https://packaging.python.org/guides/distributing-packages-using-setuptools/)
本地打包
进入setup.py同级目录,然后运行打包程序;
# 运行setup.py
python setup.py sdist
如无异常,本地打包成功后;会新增dist与对应的xxx.egg-info文件夹
上传分享本地包到PyPI
pip install twine # 如果已经安装twine,跳过次步骤
twine upload dist/* # 进入setup.py同级目录执行
# 接着会让你输入PyPI用户名和密码,注意不是邮箱和密码
# 出现下面信息说明成功,如有错误信息,检查setup.py配置信息
验证与使用分享的python包
1.验证 Search results · PyPI 官网查询确认上传包是否成功
2.使用 本地pip install xxx(上传模块),按第三方模块使用即可
# 举个栗子
from str2_md5 import str2_md5
myStr = 'hello_PyPI'
print(str2_md5.getStrAsMD5(myStr))
官方参考: Packaging Python Projects — Python Packaging User Guide