怎样创建Python包 [2023]

Python是基于一个2023 Stackoverflow survey的第三常用编程语言。这种通用目的可以用于数据科学、网站开发、机器学习、软件工程和科学计算。

Python包是你在学习和使用Python语言时会遇到的术语之一。Python包是Python模块的集合,基本上是一组可重复使用的代码。

本文将:

  • 定义Python包
  • 解释Python包在编程中的重要性
  • 演示如何创建Python包
  • 演示如何使用和测试Python包
  • 演示如何上传Python包

什么是Python包?

Python包是编程中的基本构建块。没有包,开发人员可能需要从头开始编写所有内容,使编程变成一个漫长而繁琐的过程。Python包是Python模块的集合,基本上是一组可重复使用的代码。

Python中的模块是包含Python代码的文件,可以在其他Python程序中导入。要创建一个Python包,您必须将代码存储在一个包含 __init__.py 文件的目录中。

Python包可以包含其他包(嵌套),并且有数千个Python包可以在线获得。其中一些包是官方的,而其他一些则不是。大多数Python包都可以在 https://pypi.org/ 上找到。

一个示例是Django,这是一个Python网络框架,可以用于构建Web应用程序。Scikit-learn、PyTorch和TensorFlow是机器学习领域中流行的包。

Python包的重要性

作为程序员,为什么不从头开始创建所有东西?我们是否需要Python包?以下是Python包重要的一些原因:

  • 节省时间:Python包为您提供了访问预先编写的解决常见问题的代码的方式。每当您想编写Python脚本时,可以使用Python包而不是重新发明轮子。
  • 便于分发代码:在编程中,合作是非常常见的。您可以创建一个Python包,供团队成员在合作项目时随时导入。
  • 代码可重用性:如果您在自己的Python程序中经常重复编写某个代码块,可以将其打包并在应用程序中进行导入。
  • 代码组织:Python包允许您将代码组织成逻辑模块。这种方法使得阅读和维护Python代码变得更加容易。

如何创建您的第一个Python包

我们已经提到Python是一种通用语言。作为程序员,您可以创建不同类型的包。

例如,您可以创建一个自动化某些任务的包,一个帮助您预算的包,甚至学习一种新语言的包。但是,在开始创建您的第一个包之前,您需要以下准备工作:

先决条件:

  • 已在本地机器上安装Python。如果您使用Linux,则Python已默认安装在您的操作系统中。您可以使用以下命令 python –version 或 python3 –version 检查Python是否已安装。如果已安装Python,您将在终端上看到类似于以下内容的输出:

如果没有安装Python,您可以在 https://www.python.org/downloads/ 下载它。

  • 了解Python。您需要了解如何编写Python类、模块和函数。
  • 软件包管理器。我们将使用pip进行演示。您可以使用以下命令检查是否已安装pip:
pip --version

如果已安装,您将在终端上看到类似的输出。

要安装的软件包的要求可能会有所不同。

我将创建一个简单的Python软件包,以演示如何检查一个数字是否是素数。您可以按照以下步骤进行操作:

  • 第一步:创建一个项目文件夹,我将命名为primechecker
  • 第二步:在primechecker文件夹中创建另一个文件夹,命名为prime
  • 第三步:在您在第二步中创建的目录中创建一个文件,命名为prime.py。您可以使用以下命令合并这三个步骤:
mkdir primechecker && cd primechecker && mkdir prime && cd prime && touch prime.py
  • 第三步:在您的代码编辑器中打开您的项目。然后,您可以将以下代码添加到检查一个数字是否是素数的prime.py文件中:
def is_prime(number):

    if number < 2:

        return False

    for i in range(2, int(number ** 0.5) + 1):

        if number % i == 0:

            return False

    return True
  • 第四步:在prime文件夹中创建一个新文件,命名为__init__.py。这个文件使得Python能够识别我们创建的项目文件夹作为一个软件包。

您可以使用以下命令:

touch prime/__init__.py
  • 第五步:测试您的代码。我们可以在根文件夹中的一个test.py文件中创建一个脚本,用于检查一个数字是否是素数。返回到主文件夹并使用以下命令:
touch test.py

然后,您可以将以下代码添加到此文件中:

from prime.prime import is_prime

number = int(input("输入一个数字:"))

result = is_prime(number)

print(f"{number} 是素数:{result}")

运行此命令以检查您的代码:

python3 test.py

现在,您可以输入一个数字并检查它是否是素数。

例如,我已经检查了数字5和1是否是素数,并得到了以下结果:

如何在线上传软件包

您可以将创建的软件包托管在PyPI(Python软件包索引)上。这是一个包含数千个Python软件包的中央仓库。如果您还没有账号,请前往https://pypi.org/创建一个。

现在,您可以按照以下步骤将您的软件包上传到网上:

  • 第一步:在根文件夹(我的是primechecker)中创建一个新文件,并将其命名为setup.py
  • 第二步:更改setup.py文件的内容,以包含您要上传的软件包的信息。

此文件的代码应如下所示:

from setuptools import setup, find_packages

setup(

    name='primechecker',

    version='1.0.0',

    author='Your Name',

    author_email='[email protected]',

    description='用于检查素数的软件包',

    packages=find_packages(),

)

将名称、作者、作者电子邮件和描述更改为适合您的软件包详情。

  • 第三步:构建您的软件包。在仍然在根文件夹中的情况下运行此命令:
python3 setup.py sdist bdist_wheel

如果您检查项目文件夹,您可以在根文件夹中看到两个新文件夹(build和dist)。

  • 第四步:安装twine。这是上传软件包到PyPI所需的软件包。

使用此命令:

pip install twine
  • 第五步:上传软件包

使用此命令:

twine upload dist/*

您将被提示输入用户名和密码。如果您的软件包名称尚未被占用,该软件包将会在线发布,并且您将在终端上获得一个链接。

您刚刚发布的软件包将对公众开放。任何希望使用该软件包的人都可以使用pip下载它。

例如,我发布的软件包可以按如下方式下载:

pip install primechecker==1.0.0.

创建Python软件包的最佳实践

  • 注意Python打包标准:尽管您可以自由决定要创建的软件包类型,但请始终记住Python软件包有一些您应该遵循的标准。在开始编写代码之前,请在https://packaging.python.org/上查看这些标准。
  • 部署前测试您的软件包:程序中常见错误。在构建大型软件包时,创建用于生成自动化测试的脚本尤为重要。这种方法可确保您上传的软件包没有错误。
  • 版本控制:一个合适的软件包应遵循语义化版本控制。我们演示的软件包版本号为1.0.0。第一部分(1)是主要版本,第二部分(0)是次要版本,最后一部分是修订版本。
  • 指定所有依赖项:根据您的需求,您的软件包中可能包含各种依赖项或其他软件包。您应在上传时在软件包的描述中提及所有依赖项。您可以使用setuptools或poetry等工具添加和管理这些依赖项。
  • 使用版本控制:编程是一个持续的过程。您可能不断升级或改进您的软件包,添加新功能或使其更高效。您可能还想邀请贡献者。您可以将软件包代码上传到GitHub或GitLab等平台,使您的代码可访问并允许协作。
  • 文档化您的代码:我们创建的软件包仅用于演示目的。但是,如果您打算与公众或团队成员共享这样的软件包,您必须生成指导用户的文档。您可以使用PydocSphinx等工具生成文档。

我还可以在哪里上传Python软件包?

尽管Python软件包索引(PyPI)是Python软件包的官方存储库,但这并不意味着您受到限制。在确定要上传Python软件包的位置时,需考虑文件大小、软件包性质、所需支持级别和目标受众。

您可以上传Python软件包的其他地方包括:

  • GitHub:GitHub是最大的代码托管平台。您可以创建一个仓库,并将您的Python软件包作为zip文件添加以重新分发。
  • Conda:Conda是一个可以用于Python软件包的软件包管理器。该平台在数据科学家中很受欢迎。在Conda上创建一个帐户,并开始上传您的软件包以便重新分发。
  • PyPI镜像:有许多PyPI镜像可以镜像PyPI平台的内容。选择一个适合您需求的镜像来托管您的软件包。

结论

您现在掌握了创建Python软件包并将其发布在线的步骤。我们的示例只是基本的,但您可以进行各种尝试并创建复杂的软件包。然而,在构建Python软件包时,始终创建正确的文件夹结构。

类似文章