Python 包

我们根据一些标准将大量文件组织在不同的文件夹和子文件夹中,这样我们就可以轻松地找到并管理它们。同样,Python 中的包将模块化方法的概念带到了下一个逻辑层次。众所周知,一个模块可以包含多个对象,比如类、函数等。 一个包可以包含一个或多个相关模块。实际上,包实际上是一个包含一个或多个模块文件的文件夹。

让我们使用以下步骤创建一个名为 mypackage 的包:

  • 创建一个名为D:\MyApp的新文件夹。
  • MyApp内,创建一个名为‘my package’的子文件夹。
  • 在 mypackage 文件夹中创建一个空的__init__.py文件。
  • 使用支持 Python 的编辑器,如 IDLE,用以下代码创建模块 greet.py 和 functions.py:

greet.py

def SayHello(name):
    print("Hello ", name) 

functions.py

def sum(x,y):
    return x+y

def average(x,y):
    return (x+y)/2

def power(x,y):
    return x**y 

就这样。我们已经创建了名为 mypackage 的包。以下是文件夹结构:

Package Folder Structure

从包中导入模块

现在,为了测试我们的包,将命令提示符导航到MyApp文件夹,并从那里调用 Python 提示符。

D:\MyApp>python

从 mypackage 包导入函数模块,并调用其 power()函数。

>>> from mypackage import functions
>>> functions.power(3,2)
9

还可以从包中的模块导入特定功能。

>>> from mypackage.functions import sum
>>> sum(10,20)
30
>>> average(10,12)
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
NameError: name 'average' is not defined

init.py

包文件夹包含一个名为__init__.py的特殊文件,用于存储包的内容。它有两个目的:

  1. Python 解释器会将包含__init__.py文件的文件夹识别为包。
  2. __init__.py从要导入的模块中公开指定的资源。

一个空的__init__.py文件使得当这个包被导入时,上述模块的所有功能都可用。注意__init__.py对于文件夹被 Python 识别为包是必不可少的。您可以根据需要定义单个模块中的可用功能。

*Note:*We shall also create another Python script in the MyApp folder and import the mypackage package in it. It should be at the same level of the package to be imported. *__init__.py文件通常保持为空。但是,它也可以用于从包文件夹中的模块中选择特定的功能,并使它们可用于导入。如下修改__init__.py:

init.py

from .functions import average, power
from .greet import SayHello 

现在可以在解释器会话或另一个可执行脚本中导入指定的函数。

MyApp文件夹中创建test.py来测试我的包。

test.py

from mypackage import power, average, SayHello
SayHello()
x=power(3,2)
print("power(3,2) : ", x) 

请注意,功能power()SayHello()是从包中导入的,而不是从它们各自的模块中导入的,如前所述。上述脚本的输出是:

D:\MyApp>python test.py
Hello world
power(3,2) : 9

全局安装包

一旦创建了一个包,就可以通过运行安装脚本来安装它以供系统范围使用。脚本从setuptools模块调用setup()函数。

让我们通过运行一个安装脚本来安装 mypackage,以便在系统范围内使用。

将以下代码保存为父文件夹MyApp中的 setup.py。脚本从 setuptools 模块调用setup()函数。setup()函数接受各种参数,如名称、版本、作者、依赖列表等。zip_safe参数定义包是以压缩模式还是常规模式安装。

Example: setup.py

from setuptools import setup
setup(name='mypackage',
version='0.1',
description='Testing installation of Package',
url='#',
author='auth',
author_email='[[email protected]](/cdn-cgi/l/email-protection)',
license='MIT',
packages=['mypackage'],
zip_safe=False) 

现在执行以下命令,使用 pip 实用程序安装mypackage。 确保命令提示符在父文件夹中,在本例中为D:\MyApp

D:\MyApp>pip install mypackage
Processing d:\MyApp
Installing collected packages: mypack
Running setup.py install for mypack ... done
Successfully installed mypackage-0.1

现在 mypackage 可以在系统范围内使用,并且可以在任何脚本或解释器中导入。

D:\>python
>>> import mypackage
>>>mypackage.average(10,20)
15.0
>>>mypackage.power(10,2)
100

您可能还想发布该包供公众使用。 PyPI (代表 Python 包索引)是 Python 包的存储库。 访问https://packaging.python.org/distributing了解更多关于上传包到 PyPI 的流程。**

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
BTWKV的头像BTWKV
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相关推荐

  • Python列表中负数的个数

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

    编程 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中引入上一级目录的函数。 一、加入环…

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

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

    编程 2025-04-29
  • 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

发表回复

登录后才能评论