python开发里面,用的比较多的可能就是pip了,比如要操作数据库那么就需要用到pymysql:
$ pip install pymysql
这里的pymysql,就是由其他组织开发的组件,这个组件放在一些公共仓库,方便开发者直接下载。
举一个场景:
公司的业务里面,好几个项目,有一块公共逻辑在这几个项目里面都要用到,那么你要怎么管理这块公共逻辑呢?
几个项目里面同时冗余这个公共逻辑吗?
要修改逻辑的时候,几个项目都要修改吗?
这里简单整理一下开发一个自有组建的思路,教程原文来自于pypi官方文档。
1、新建一个组件库项目,项目结构类似于此:
/project_name
/pkg_name
__init__.py
setup.py
LICENSE
README.md
其中project_name(项目名称)可以随意,pkg_name(组件目录)名称也可以随意,但是注意尽量只用字母或是下划线作为命名。
组件目录下存放的便是这个组件包含的内容。
2、编辑setup.py, 填入一些组件包的信息说明:
# coding:utf8
"""
@author Nemo
@time 2021/12/03 11:01
"""
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="nemo_python_db", # 组件名称,注意可能会重复
version="0.1.1", # 组件版本号
author="Nemo", # 作者名字
author_email="nemo@link-nemo.com", # 作者邮箱
description="简单的数据操作库", # 组件一句话说明
long_description=long_description, # 组件详细说明
keywords='python tool database', # 组件关键字
long_description_content_type="text/markdown", # 组件详细说明类型,这里用的是markdown
url="https://github.com/geeeeeeeeeeeeeeeek/nemo_python_database", # 组件主页地址
license="MIT Licence", # 组件使用许可证信息
platforms='Mac Linux', # 组件支持平台
packages=setuptools.find_packages(), # 自定发现包,而不用手动列出每个包
)
3、版权和Readme可按实际需要填写。
4、生成分发包。
首先需要先确保setuptools和wheel到最新版本:
$ python3 -m pip install --user --upgrade setuptools wheel
接着到setup.py目录执行生成命令:
$ python3 setup.py sdist bdist_wheel
生成文件将会保存在dist目录下。
5、上传pypi。
组件生成后,想要让其他人也能用上这个组件库?
需要先发布到pypi库。这里的pypi库可以是公开的,也可能是公司内部自己的。这里以官方pypi库做个示范。
首先先到pypi注册一个账号:https://test.pypi.org。
安装twine:
$ python3 -m pip install --user --upgrade twine
上传组件包:
python3 -m twine upload --repository-url https://test.pypi.org/legacy/ dist/*
上传中会提示输入用户名和密码,输入即可。
无提示报错,则上传成功。
可以访问https://test.pypi.org/manage/projects/查看刚刚上传的组件包。
6、本地下载使用:
$ pip install -i https://test.pypi.org/simple/ pkg_name
大致便是这样了,先简单写写。
顺便推荐一个新鲜上传、简单实现的数据库单表操作组件:
https://test.pypi.org/project/nemo-python-db/