Nemo

Nemo 关注TA

路漫漫其修远兮,吾将上下而求索。

Nemo

Nemo

关注TA

路漫漫其修远兮,吾将上下而求索。

  • 加入社区3,279天
  • 写了1,496,113字

该文章投稿至Nemo社区   Python  板块 复制链接


如何开发一个自己的Python组件?

发布于 2021/12/03 16:01 16,622浏览 4回复 1,852

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/


本文标签
 {{tag}}
点了个评