python 制作自定义包并安装到系统目录的方法

yizhihongxing

Python 是一门流行的编程语言,灵活性高、易于学习,能够实现许多应用。在编写 Python 代码时,我们常常需要用到各种不同的模块。对于重复使用的代码,我们可以将它们打包成一个包,方便管理和调用代码。

本文将介绍 Python 制作自定义包并安装到系统目录的方法。下面是详细的步骤:

1.创建包目录结构

第一步是创建包的目录结构。在包的根目录下,应该包含一个 setup.py 文件和一个包的名称文件夹。包名称文件夹应该包含一个 __init__.py 文件和任何其他需要的 Python 模块。

假设我们创建一个名为 example_pkg 的包,目录结构应该是这样的:

example_pkg/
    setup.py
    example/
        __init__.py
        module1.py
        module2.py
        ...
  • setup.py 文件里面应该包含一些元数据,如包的名称、版本等,要注意这些信息务必与包中使用的一致。

  • example/__init__.py 是包的入口文件,其中可以定义包级别的变量和包级别的函数。

  • example/module1.py 等模块文件则是普通的 Python 模块,其中包含要共享的类和函数。

2.编写 setup.py

下一步是编写 setup.py 文件。这个文件描述了如何将你的包安装到系统上。其中包括一些元数据以及依赖项的描述(如果有的话)。

示例 1:

下面是一个最基本的 setup.py 文件:

from setuptools import setup, find_packages

setup(
    name='examplepkg',
    version='0.1',
    packages=find_packages(),
    install_requires=[],
    entry_points={
        'console_scripts': [
            'example = example_pkg.example.module1:main'
        ]
    }
)

在这个文件中,主要涉及到以下内容:

  • 导入了必要的函数和类,如setupfind_packages

  • 设置了包的名称、版本号和安装时所需的其他包。

  • 使用find_packages()函数自动查找包及其子包,并将其包含在packages列表中。

  • entry_points 部分描述了这个包含有可执行文件。在上面的例子中,我们将example绑定到了 example_pkg.example.module1:main。这意味着我们可以在终端运行 example,并运行example_pkg/example/module1.py中的main函数。

示例 2:

接下来,你可能需要更多的功能,如在不同 OS 上安装依赖项。下面是一个稍微更复杂的例子:

from setuptools import setup, find_packages

setup(
    name='examplepkg',
    version='0.1',
    packages=find_packages(),
    install_requires=[
        'numpy',
        'pandas',
        'matplotlib',
    ],
    platforms='any',
    extras_require={
        'web': ['flask', 'flask-login'],
        'data': ['pandas', 'numpy'],
        'image': ['opencv-python', 'pillow'],
    },
    classifiers=[
        'Development Status :: 5 - Production/Stable',
        'Environment :: Web Environment',
        'Intended Audience :: Developers',
        'License :: OSI Approved :: MIT License',
        'Operating System :: OS Independent',
        'Programming Language :: Python',
        'Programming Language :: Python :: 3',
        'Programming Language :: Python :: 3.6',
        'Programming Language :: Python :: 3.7',
        'Programming Language :: Python :: 3.8',
        'Programming Language :: Python :: 3.9',
        'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
        'Topic :: Software Development :: Libraries :: Python Modules',
    ],
)

这个文件在基础上增加了以下内容:

  • 添加了依赖项列表 install_requires。这意味着在安装时必须安装此列表中的所有库。

  • 使用 extras_require对其他依赖项进行了分类。例如,在安装 examplepkg时,如果需要的是 web 功能,需要使用以下命令来安装它: pip install examplepkg[web]

  • classifiers 通过提供各种元数据,使包更易于发现和分类。可以根据需要进行配置。

3.构建包

有了 setup.py ,现在可以开始构建包了。在包含 setup.py 的目录中运行以下命令:

python setup.py sdist bdist_wheel

这会构建一个源分发包和一个 wheel 文件,在 dist 文件夹中可以找到。生成的 wheel 文件能用于快速安装,并且在比源码分发包更加端到端。

4.安装包

最后一步是将包安装到你的系统上。可以使用以下命令:

pip install examplepkg-0.1-py3-none-any.whl

或:

pip install examplepkg-0.1.tar.gz

这将在系统上安装名为example_pkg的包,可以在 Python 的任何地方导入它。

以上就是 Python 制作自定义包并安装到系统目录的完整攻略。希望对你有帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 制作自定义包并安装到系统目录的方法 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • Python循环实现n的全排列功能

    实现n的全排列功能的常用算法是回溯算法,其基本思路为在每一层搜索时枚举该层可以选择的元素,满足条件的元素进入下一层搜索,不满足条件的元素回溯至上一层继续搜索。在Python中可用循环实现回溯算法求解n的全排列,具体过程如下。 引入模块 import itertools 确定参数 n = 3 生成全排列 nums = [i+1 for i in range(n…

    python 2023年6月5日
    00
  • 解决python xx.py文件点击完之后一闪而过的问题

    解决 Python xx.py 文件点击完之后一闪而过的问题,通常有以下两种方法: 方法1:使用cmd命令窗口 打开 cmd 命令窗口,进入 Python 文件所在的目录,并输入以下命令: python xx.py 其中,xx.py 表示文件名。执行完毕后,命令窗口将显示程序运行的所有结果。如果程序不需要任何输入,则命令窗口会停留在程序运行结束的状态。 示例…

    python 2023年6月3日
    00
  • python使用tqdm模块处理文件阅读进度条显示

    当我们需要处理大量的文件时,特别是在读取大文件时,会发现读取的过程异常耗时,无法反应出程序的实际运行状况。为了解决这个问题,我们可以使用进度条显示当前处理的进度,方便我们在终端直观地观察程序的进展。tqdm模块提供了一种简单易用的进度条显示方式,可以帮助我们更清晰地查看程序的运行情况,下面是使用tqdm模块实时显示文件读取进度的攻略。 安装tqdm模块 使用…

    python 2023年6月3日
    00
  • Python Tkinter Menu控件使用详解

    Python Tkinter Menu控件使用详解 简介 Tkinter是Python语言自带的图像界面库。其中,Menu控件是Tkinter库中一个常用的控件,用于创建菜单。 Python Tkinter Menu控件使用详解,将从以下几点进行讲解: Menu控件的基本属性 Menu控件的创建与使用 Menu控件的事件绑定 Menu控件的示例说明 Menu…

    python 2023年6月13日
    00
  • python 利用百度API进行淘宝评论关键词提取

    Python利用百度API进行淘宝评论关键词提取是指使用Python编写的一些脚本,可以通过调用百度API,对淘宝商品的评论进行关键词提取。本文将详讲解如何使用Python利用百度API进行淘宝评论关键词提取的完整攻略,包括以下几个方面: 注册百度开发者账号 创建应用并获取API Key和Secret Key 安装Python SDK 编写Python脚本 …

    python 2023年5月15日
    00
  • Python随手笔记之标准类型内建函数

    Python随手笔记之标准类型内建函数 Python中有许多标准类型内建函数可以对不同的数据类型进行操作。这些函数可以帮助我们更有效地处理数据,让我们来更详细地了解这些内建函数吧。 值类型转换函数 int() int()函数用于将字符串或数字转换为整型。如果参数无法转换成整数,则会抛出ValueError异常。 示例: num1 = int(‘123’) #…

    python 2023年6月5日
    00
  • 在 uwsgi 上切换 python 版本

    【问题标题】:switch python version on uwsgi在 uwsgi 上切换 python 版本 【发布时间】:2023-04-04 16:22:01 【问题描述】: 我正在使用 nginx 和 uwsgi 运行 django 应用程序。它工作正常,但突然我不知道我改变了什么应用程序停止工作。 问题在于 uWsgi 的 python 版本…

    Python开发 2023年4月6日
    00
  • Spring事件发布监听,顺序监听,异步监听方式

    下面是关于Spring事件发布监听、顺序监听和异步监听的详细攻略: Spring事件发布监听 1. 什么是Spring事件 Spring事件是一种用于对象之间通信的机制,它允许一个组件封装某些信息(也称为事件),并将该事件通知其他组件。Spring事件可以用于解耦,减少组件之间的依赖关系并提高代码的可重用性,是Spring应用程序中常用的一种机制。 2. 如…

    python 2023年6月13日
    00
合作推广
合作推广
分享本页
返回顶部