零基础到发布:手把手教你创建并分发 Python 自定义库
off999 2025-06-04 00:39 38 浏览 0 评论
作为程序员,我们经常依赖各种外部库来解决不同的问题。这些库由技术娴熟的开发者创建,为我们提供了节省时间和精力的解决方案。但你是否曾想过:“我也能创建属于自己的自定义库吗?”答案是肯定的!本文将为你详细介绍实现这一目标的必要步骤,无论你是专业开发者还是初学者,从代码编写和结构设计到文档编写和发布分发,本指南都将一一涵盖。
创建库的分步指南
第一步:初始化你的项目
首先,为你的项目创建一个根目录:
multiples_library/
第二步:为你的包创建目录
接下来,在项目根目录下创建你的包目录:
multiples_library/
└── multiples/
第三步:添加 init.py
现在,在你的包目录下添加 __init__.py 文件。该文件是 Python 判断目录为包的主要标志,可以包含初始化代码,并在包或其模块被导入时自动执行。
multiples_library/
└── multiples/
└── __init__.py
第四步:添加模块
接下来,需要在包目录下添加模块。模块通常包含类和函数。建议为每个模块起一个有意义的名字以描述其用途。
multiples_library/
│
└── multiples/
├── __init__.py
├── is_multiple_of_two.py
└── is_multiple_of_five.py
第五步:编写模块内容
在这一步,你将定义每个模块的具体功能。例如:
模块:is_multiple_of_two.py
def is_multiple_of_two(number):
"""检查一个数字是否为2的倍数。"""
return number % 2 == 0
模块:is_multiple_of_five.py
def is_multiple_of_five(number):
"""检查一个数字是否为5的倍数。"""
return number % 5 == 0
第六步:添加 setup.py
接下来,在你的包目录下添加 setup.py 文件。
multiples_library/
│
├── multiples/
│ ├── __init__.py
│ ├── is_multiple_of_two.py
│ └── is_multiple_of_five.py
│
└── setup.py
该文件包含有关你的包的元数据,如名称、依赖、作者、版本、简介等,还定义了要包含的模块以及构建和安装包的相关指令。
示例:setup.py
from setuptools import setup, find_packages
setup(
name='multiples_library', # 替换为你的包名
version='0.1.0',
packages=find_packages(),
install_requires=[
# 在此处列出依赖项
],
author='Your name',
author_email='Your e-mail',
description='一个用于检查2和5倍数的库。',
classifiers=[
'Programming Language :: Python :: 3',
'License :: OSI Approved :: MIT License', # 许可证类型
'Operating System :: OS Independent',
],
python_requires='>=3.6',
)
第七步:添加测试和其他文件(可选)
这一步并非必须,但如果你希望构建一个高质量、无错误的专业库,建议这样做。此时,项目结构大致如下:
multiples_library/
│
├── multiples/
│ ├── __init__.py
│ ├── is_multiple_of_two.py
│ └── is_multiple_of_five.py
│
├── tests/
│ ├── __init__.py
│ ├── test_is_multiple_of_two.py
│ └── test_is_multiple_of_five.py
│
├── docs/
├── LICENSE.txt
├── CHANGES.txt
├── README.md
├── setup.py
└── requirements.txt
下面对根目录下这些可选文件和文件夹的用途做简要说明:
- tests/
- :包含库的测试用例,确保库按预期运行。
- docs/
- :存放库的文档。
- LICENSE.txt
- :说明他人使用你代码的许可条款。
- CHANGES.txt
- :记录库的更新变更。
- README.md
- :包含包简介和安装说明。
- requirements.txt
- :列出库所需的所有外部依赖,可通过 pip install -r requirements.txt 一次性安装。
这些文件和文件夹的作用都非常直观,稍加了解即可明白其用途。这里我想补充说明一下 tests 目录的使用。
tests/ 目录
你可以选择在项目根目录(如 multiples_library)下或包目录(如 multiples)下添加 tests 目录。个人建议放在根目录下,有助于代码模块化。
编写测试用例有多种库可供选择。这里以最常用且我个人最喜欢的“unittest”为例。
is_multiple_of_two 的单元测试
测试案例存放于
test_is_multiple_of_two.py 文件:
import unittest
import sys
import os
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from multiples.is_multiple_of_two import is_multiple_of_two
class TestIsMultipleOfTwo(unittest.TestCase):
def test_is_multiple_of_two(self):
self.assertTrue(is_multiple_of_two(4))
if __name__ == '__main__':
unittest.main()
is_multiple_of_five 的单元测试
测试案例存放于
test_is_multiple_of_five.py 文件:
import unittest
import sys
import os
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from multiples.is_multiple_of_five import is_multiple_of_five
class TestIsMultipleOfFive(unittest.TestCase):
def test_is_multiple_of_five(self):
self.assertTrue(is_multiple_of_five(75))
if __name__ == '__main__':
unittest.main()
上述单元测试非常直观,但我再解释两个函数以便理解:
- self.assertTrue(expression)
- 检查表达式是否为 True,只有为 True 时测试通过。
- unittest.main()
- 用于运行文件中定义的所有测试用例。
第八步:通过 PyPI 分发你的包
为让他人方便地获取你的库,你可以将其上传至 PyPI。分发步骤如下:
- 在 PyPI 注册账号并开启双重验证。
- 创建 API 令牌,为其命名并选择作用范围为“整个账户(Entire account)”,复制保存该令牌(只显示一次)。
- 创建 .pypirc 文件。
- MacOS/Linux:打开终端,输入:cd ~
touch .pypirc - Windows:打开命令行,输入:cd %USERPROFILE%
type NUL > .pypirc - 编辑 .pypirc 文件,粘贴以下配置:
- [distutils]
index-servers =
pypi
[pypi]
username = __token__
password = pypi-<你的API令牌> - 注意:不要忘记在 API 令牌前加上 pypi- 前缀。
- 确保项目根目录下有 setup.py 文件。生成分发文件:
- python3 setup.py sdist bdist_wheel
- 安装上传工具 twine:
- pip install twine
- 使用 twine 上传你的包:
- twine upload dist/*
第九步:安装和使用你的库
你可以通过如下命令安装库:
pip install [your-package]
例如:
pip install multiples_library
现在你可以这样使用库:
from multiples.is_multiple_of_five import is_multiple_of_five
from multiples.is_multiple_of_two import is_multiple_of_two
print(is_multiple_of_five(10)) # 输出 True
print(is_multiple_of_two(11)) # 输出 False
总结
简而言之,创建一个 Python 库既有趣又实用,将它分发出去还能帮助他人。本文努力以清晰的方式涵盖了创建 Python 库所需的全部内容。如果你在操作过程中遇到任何问题或困惑,欢迎在评论区留言提问。
相关推荐
- 系统大全网站(系统大全网站推荐)
-
下载时发生错误可能是以下原因:1.你的网速过慢,网页代码没有完全下载就运行了,导致不完整,当然就错误了。请刷新。2.网页设计错误,导致部分代码不能执行。请下载最新的遨游浏览器。3.你的浏览器不兼容导致...
- win10官方启动盘(win10官方启动盘怎么用)
-
1、在开始菜单搜索“设置”,打开“设置”;2、点击“更新与安全”,在左侧菜单栏点击“恢复”;3、点击“启动项”,在弹出的窗口中会显示当前可以启动的项目,点击“编辑”;4、在打开的“编辑启动项”窗口中,...
- win10系统安装不了(win10 安装不了)
-
电脑装不上win10系统可能是因为以下几个原因导致的原因一:win10安装文件不对我们在安装win10之前,要确保下载到安装包真实可用的,否则安装肯定会有问题,建议下载安全可靠的安装包!原因二:系统文...
- 国内dns哪个最快(dns开启好还是关闭好)
-
移动dns设置首选114.114.114.114,它又好又快。首选DNS和备用DNS都是一种域名系统,这两种域名系统有着先后之分,如果在首选DNS正常的情况下,就用首选DNS地址。当首选DNS服务器出...
- winxp安装盘(winxp系统安装)
-
xp系统安装步骤如下1、将下载的xp系统iso压缩包文件下载到C盘之外的分区,比如下载到D盘,右键使用WinRAR等工具解压到当前文件夹或指定文件夹,不能解压到C盘和桌面,否则无法安装;?2、解压之后...
- 现在的win11稳定了吗(win11稳定嘛)
-
windows10更稳定,由于win11刚刚推出没多久,稳定差不够好,兼容性也有待提升,无论是应用还是游戏都会遇到不明程度的问题,因此,在日常的使用过程中,我们还是应当以稳定性为优先,选择win10是...
- xp安装包下载到手机(xp系统安装包)
-
手机是基于ARM架构的处理器,而WindowsXP是基于x86架构的操作系统,因此无法直接在手机上安装WindowsXP。除非您的手机是使用Intel处理器,但这种情况非常罕见。如果您需要在手机上...
- 如何查看硬盘序列号(windows如何查看硬盘序列号)
-
1.打开开始菜单栏,输入【cmd】点击【确定】;2.在命令窗口依次输入【diskpart】-【listdisk】-【selectdisk0】;3.选好要查看的硬盘后,接着输入【detaildi...
- 虚拟机安装win7教程(虚拟机安装win7教程图解)
-
1.首先,下载并安装虚拟机软件,如VMwareWorkstation、VirtualBox等。2.打开虚拟机软件,创建一个新的虚拟机。3.在创建虚拟机的过程中,选择安装Windows7专业版的IS...
- 系统脱敏法的操作程序如何
-
系统脱敏疗法(systematicdesensitization)又称交互抑制法,是由美国学者沃尔普创立和发展的。这种方法主要是诱导求治者缓慢地暴露出导致神经症焦虑、恐惧的情境,并通过心理的放松状态...
- 闪迪u盘低级格式化工具(闪迪u盘格式化分配单元大小)
-
闪迪U盘格式化后速度变慢的可能原因及解决方法如下:文件系统问题:格式化时选择的文件系统类型可能会影响U盘的性能。常见的文件系统类型包括FAT32、NTFS和exFAT等。如果文件系统类型不合适,可能会...
- psd文件下载(psd格式下载网站)
-
1、在photoshop中,不能通过置入的方法来加载PSD文件,因为,通过置入的方法加载PSD文件,它是以合并图层的方法把PSD文件加入,这样,就失去了PSD文件的所有图层信息。 2、在文档中想...
- 宏碁官网下载win7系统(宏碁官方系统)
-
宏基笔记本win8系统换成win7步骤:1、更改bios设置,关闭“SecureBoot”功能,启用传统的“LegacyBoot”。2、制作u启动U盘启动盘,下载win7系统安装包3、设置U盘启动...
- 如何重装系统win7旗舰版32位
-
首先下载制作一个带系统的启动u盘,然后按以下步骤安装:1、首先关闭电脑上面的杀毒软件,2、进入bios选择u盘启动。3、插入启动u盘重新启动电脑4、进入pe系统镜像环节,选择要安装的系统(32位),然...
- 应用程序发生异常0xe0000008
-
先查看一下对应的软件是不是出现了损坏,也可以重装此软件。我们还可以尝试通过修改注册表来解决。按Win+R(或者在开始菜单搜索框输入“运行”)打开运行,然后输入“regedit”回车,打开注册表恢复原来...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
