为Python程序添加模块和依赖: setup.py的用法

对于Python开发者来说,写好代码并不是唯一的步骤,还需要将代码打包成模块,并且加上依赖关系。这样其他开发者在使用你的模块时就可以更方便地调用并且避免重复造轮子。Python的标准库中提供了setuptools,通过setup.py脚本可以制作出一个可发布的Python模块并且管理依赖关系。

一、创建setup.py文件

要使用setuptools创建一个可发布的Python模块,首先在项目根目录下创建一个名为setup.py的文件。setup.py文件是用来描述Python模块如何安装、构建以及打包的脚本,简单来说就是模块的说明书。

from setuptools import setup, find_packages

setup(
    name='example',  # 模块名
    version='0.1',  # 版本号
    packages=find_packages(),  # 包含的包
    install_requires=['numpy>=1.16.6', 'pandas>=0.24.2'],  # 依赖的第三方库
    test_suite='nose.collector',
    tests_require=['nose'],
    entry_points={
        'console_scripts': [
            'example = example.app:start'
        ]
    },
    classifiers=[
        "Programming Language :: Python :: 3",
        "License :: OSI Approved :: MIT License",
        "Operating System :: OS Independent",
    ]
)

这里导入了setuptools的setup()函数和find_packages()函数。setup()函数的参数包含了很多可以设置的选项,例如模块名、版本号、包含的包、依赖关系、可执行文件等。

二、设置版本号

版本号是一个Python模块最重要的元素之一。通过给模块设置版本号,可以使你的代码与其他依赖关系和版本号兼容的代码一起工作,还可以根据需要更轻松地追踪和管理你的代码的进展。

设置版本号的通常方式是修改setup.py文件中的version参数,如下所示:

setup(
    name='example',
    version='0.1',
    # ...
)

版本号通常由两个逻辑部分构成:主版本号和次版本号。主版本号通常表示代码中引入了重大变化或不向后兼容的更改,而次版本号通常表示一些小的增强、重构或者错误修复。

三、依赖管理

依赖管理是打包Python模块时必不可少的一部分。一般来说,一个Python模块可能会依赖于其他的第三方模块,这些模块需要在安装前先安装。

可以在setup.py的install_requires选项中声明你的Python模块的依赖项,例如:

setup(
    name='example',
    version='0.1',
    install_requires=['numpy>=1.16.6', 'pandas>=0.24.2'],
    # ...
)

这里声明了numpy和pandas两个第三方库的依赖,且要求版本号不低于某个值。

四、生成可执行文件

有时,一个Python模块可以生成可执行文件。例如,一些工具可以在命令行中运行,而不是直接运行Python代码。在Python中,可以使用setuptools的entry_points选项来定义一个可执行文件。

下面是一个例子:

setup(
    name='example',
    version='0.1',
    # ...
    entry_points={
        'console_scripts': [
            'example = example.app:start'
        ]
    },
    # ...
)

这里,我们将example.app:start作为可执行文件的入口点。一旦模块被安装,用户就可以运行example作为命令,并调用到example模块的start()函数。

五、构建和发布Python模块

在设置好setup.py文件后,可以使用setuptools来构建和发布Python模块了。要构建模块,请在命令行中进入包含setup.py文件的目录,并执行以下命令:

python setup.py sdist

这将创建一个源分发包(.tar.gz)。如果同时也想为其他操作系统和Python版本构建二进制分发包(.whl),可以使用以下命令:

python setup.py bdist_wheel

最后,通过如下命令上传分发包到PyPI:

twine upload dist/*

其中,twine是PyPI官方的上传工具。在执行此命令前,请确保你已在PyPI上注册了帐户。

六、总结

Python的setuptools是一个非常方便的打包工具,不仅能够管理依赖关系,还能方便地发布Python模块。一个好的Python模块应该是易于安装、易于调用,而设置好的setup.py文件就是实现这些目标的重要一环。

原创文章,作者:KVUP,如若转载,请注明出处:https://www.506064.com/n/135941.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
KVUPKVUP
上一篇 2024-10-04 00:15
下一篇 2024-10-04 00:15

相关推荐

  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29

发表回复

登录后才能评论