百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

零基础到发布:手把手教你创建并分发 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。分发步骤如下:

  1. 在 PyPI 注册账号并开启双重验证。
  2. 创建 API 令牌,为其命名并选择作用范围为“整个账户(Entire account)”,复制保存该令牌(只显示一次)。
  3. 创建 .pypirc 文件。
  4. MacOS/Linux:打开终端,输入:cd ~
    touch .pypirc
  5. Windows:打开命令行,输入:cd %USERPROFILE%
    type NUL > .pypirc
  6. 编辑 .pypirc 文件,粘贴以下配置:
  7. [distutils]
    index-servers =
    pypi

    [pypi]
    username = __token__
    password = pypi-<你的API令牌>
  8. 注意:不要忘记在 API 令牌前加上 pypi- 前缀。
  9. 确保项目根目录下有 setup.py 文件。生成分发文件:
  10. python3 setup.py sdist bdist_wheel
  11. 安装上传工具 twine:
  12. pip install twine
  13. 使用 twine 上传你的包:
  14. 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”回车,打开注册表恢复原来...

取消回复欢迎 发表评论: