TDLR
直接探究Python包装的创建之前,让我们首先掌握模块化编程的概念。
模块化编程是指将大型,笨拙的编程任务分解为单独,较小,更可管理的子任务或模块的过程。然后可以像构建块一样将单个模块拼凑在一起以创建较大的应用程序。
那么,python中模块化编程的示例是什么?
功能,模块和软件包都是Python中促进代码模块化的构造。
不错!
您可能已经知道python的功能是什么,但是您是否感到困惑,以为模块和包装之间的区别是什么?
假设您已经开发了一个非常大的应用程序,其中包括许多模块。随着模块的数量的增加,如果将它们倾倒到一个位置,则很难跟踪它们。如果它们具有相似的名称或功能,则尤其如此。您可能希望有一种分组和组织它们的方法。
在这种情况下,软件包允许使用点表示法对模块名称空间进行层次结构。
好吧,太好了!让我们认为我们有一些可用的模块;现在让我们看看如何从中创建一个包!
Python软件包是使用python包装工具(例如setuptools,flit,pdm,诗歌等)创建的。
Python Setuptools是一种用于包装Python项目的工具。今天,我们的计划是使用setuptools创建软件包。
步骤1:设置环境
- 升级PIP工具
py -m pip install --upgrade pip
- 升级构建
py -m pip install --upgrade build
- 安装setuptools
pip install setuptools
您可以在链接https://pypi.org/project/setuptools/
中阅读有关setuptools的信息- 安装麻线工具
pip install twine
步骤2:创建文件夹结构,如下所示
在这里,我在另一个文件夹级别src/sunish_package和test
下创建了一个主文件夹调用sunish_package您也可以创建名为许可证,readme和pyproject.toml
的文件步骤3:添加模块
在文件夹src/sunish_package下,我创建了两个使用名称 init> init> .py和mdoule_1.py
的文件- init .py是包装初始化脚本,它可以是空的
- module_1.py是我们的模块,带有测试代码
def test_function():
print("Hello World")
步骤4:更新pyproject.toml文件
在旧版本的setuptool中,用户需要在包含包装的所有配置的包装的根位置中创建设置。从pyproject.toml文件构建配置。
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"
[project]
name = "sunish_package"
version = "0.0.1"
authors = [
{ name="Example Author", email="author@example.com" },
]
description = "A small example package"
readme = "README.md"
requires-python = ">=3.7"
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
]
[project.urls]
"Homepage" = "https://github.com/pypa/sampleproject"
"Bug Tracker" = "https://github.com/pypa/sampleproject/issues"
这里要注意的是包装的名称,它应该指向SRC下的同一文件夹名称。另外,您可以在[构建系统]标题下看到填写的部分作为setuptools。这表明需要使用setuptools构建Python软件包。
步骤5:更新licesnse和readme.md
readme.md
# About Package
This is an example package
licesnse
Copyright (c) 2023 Sunish.
我更喜欢您使用正确的许可证,并使用您的软件包信息更新读书文件。由于我正在创建一个测试包,因此我在这里填写基本信息。
步骤6:创建Python软件包
转到您的根文件夹并运行以下命令。
py -m build
这创建了两个称为dist and sunish_package.egg-info
的文件夹whl文件是我们想要的文件,python软件包已包装在称为车轮(.whl)
的forrmat中步骤7:导入和测试
转到DIST文件夹并使用PIP安装软件包
pip install .\sunish_package-0.0.1-py3-none-any.whl
现在打开一个Python控制台并导入我们的新软件包
from sunish_package import module_1
module_1.test_function()
成功!!它按预期打印“ Hello World”。
步骤8:将软件包推向内部文物python存储库
为了将包裹推到我们的内部文物中,我们使用工具麻线。
在DIST文件夹中创建.pypirt文件,然后更新文物URL,用户名和密码
[distutils]
index-servers = local
[local]
repository: http://localhost:8081/artifactory/api/pypi/pypi
username: <user_name>
password: <password>
然后运行以下命令以将软件包推向伪影库
twine upload -r local <PATH_TO_THE_FILES> --config-file ~/.pypirc