Python引入多个模块及包的概念过程解析


Posted in Python onSeptember 21, 2020

实际开发中,一个大型的项目往往需要使用成百上千的 Python 模块,如果将这些模块都堆放在一起,势必不好管理。

而且,使用模块可以有效避免变量名或函数名重名引发的冲突,但是如果模块名重复怎么办呢?

因此,Python提出了包(Package)的概念。

一、包的概念和基本使用

什么是包呢?简单理解,包就是文件夹,只不过在该文件夹下必须存在一个名为“__init__.py” 的文件。

每个包的目录下都必须建立一个 __init__.py 的模块,可以是一个空模块,可以写一些初始化代码,其作用就是告诉 Python 要将该目录当成包来处理。

包名的命名方式和变量名一致,'小写字母' + '_' 。

使用 'import 包名' 可以一次性导入包中所有的模块。

示例:

1.新建一个 test_message 的文件夹

2.在目录下,新建两个文件 send_message.py 和 receive_message.py

3.在 send_message 文件中定义一个 send 函数

def send(msg):
print("正在发送信息:%s" % msg)

4.在 receive_message 文件中定义一个 receive 函数

def receive():
print("正在接收信息......")

5.在 test_message 文件夹下新建一个 __init__.py 的文件,并且在该文件中指定对外界提供的模块列表

# 从 当前目录 导入 模块列表
from . import send_message
from . import receive_message

6.在外部直接导入 hm_message 的包

import test_message
test_message.send_message.send("测试发送信息")
test_message.receive_message.receive()
#正在发送信息:测试发送信息
#正在接收信息......

二、发布模块

如果希望自己开发的模块,分享给其他人,可以按照以下步骤操作。

1、制作发布压缩包步骤

创建 setup.py

from distutils.core import setup
setup(name="test_message", # 包名
   version="1.0", # 版本
   description="发送和接收消息模块", # 描述信息
   long_description="完整的发送和接收消息模块", # 完整描述信息
   author="小名叫小明", # 作者
   author_email="328122186@qq.com", # 作者邮箱
   url="nothing", # 主页
   py_modules=["hm_message.send_message",

setup函数的参数的详细信息,可以参阅官方网站:

https://docs.python.org/2/distutils/apiref.html

构建模块

D:\project> python setup.py build

执行完毕后,会发现目录中多了一个 build 文件夹,里面是关于模块的一些文件。

生成发布压缩包

D:\project> python setup.py sdist

执行完毕后,发现当前目录下多了一个文件夹dist,里面有个压缩文件 test_message-1.0.tar.gz。

这里要注意:要制作哪个版本的模块,就使用哪个版本的解释器执行!

2、安装模块

首先解压压缩文件,进入该文件夹。
执行命令:

python setup.py install

安装好,我们就可以测试下是否能够正常使用包。

记得把原来的包删了,把下载解压的包也删了。这样才能测试出,这个包是安装在系统目录里了,而不是开发目录里。

import test_message
test_message.send_message.send("测试发送信息")
test_message.receive_message.receive()

print(test_message.__file__)
# D:\python\lib\site-packages\test_message\__init__.py

3、 卸载模块

根据 包.__file__ 得到的信息,直接从安装目录下,把安装模块的目录删除就可以。

三、安装第三方模块

第三方模块通常是指由知名的第三方团队开发的,并且被程序员广泛使用的 Python 包 / 模块。

在安装第三方模块的时候,我们一般使用 pip 工具。

pip 是一个现代的,通用的 Python 包管理工具,提供了对 Python 包的查找、下载、安装、卸载等功能。

示例:

我们下载 pygame 模块。

pygame 是一套非常成熟的游戏开发模块。

# 安装
pip install pygame
# 卸载
pip uninstall pygame

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python如何实现远程控制电脑(结合微信)
Dec 21 Python
Python设计模式之抽象工厂模式
Aug 25 Python
Python实现复杂对象转JSON的方法示例
Jun 22 Python
python实现字符串和字典的转换
Sep 29 Python
在pycharm中python切换解释器失败的解决方法
Oct 29 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
Jun 26 Python
Python中PyQt5/PySide2的按钮控件使用实例
Aug 17 Python
python多线程使用方法实例详解
Dec 30 Python
python通过对字典的排序,对json字段进行排序的实例
Feb 27 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
Feb 29 Python
pytorch 限制GPU使用效率详解(计算效率)
Jun 27 Python
PyTorch 中的傅里叶卷积实现示例
Dec 11 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
Sep 21 #Python
简单了解python关键字global nonlocal区别
Sep 21 #Python
PIP和conda 更换国内安装源的方法步骤
Sep 21 #Python
python 字符串格式化的示例
Sep 21 #Python
基于python判断字符串括号是否闭合{}[]()
Sep 21 #Python
属性与 @property 方法让你的python更高效
Sep 21 #Python
Python如何在bool函数中取值
Sep 21 #Python
You might like
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
PHP中的empty、isset、isnull的区别与使用实例
2019/03/22 PHP
[IE&FireFox兼容]JS对select操作
2007/01/07 Javascript
js GridView 实现自动计算操作代码
2009/03/25 Javascript
jquery获取input的value问题说明
2010/08/19 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
2013/08/11 Javascript
jquery实现弹出层遮罩效果的简单实例
2014/03/03 Javascript
JavaScript设计模式学习之“类式继承”
2015/03/12 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
基于jQuery实现收缩展开功能
2016/03/18 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
vue 登录滑动验证实现代码
2018/08/24 Javascript
Python cookbook(数据结构与算法)让字典保持有序的方法
2018/02/18 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
Python 16进制与中文相互转换的实现方法
2018/07/09 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
PyQt5 加载图片和文本文件的实例
2019/06/14 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
python3 requests库文件上传与下载实现详解
2019/08/22 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
使用python实现名片管理系统
2020/06/18 Python
python使用yaml 管理selenium元素的示例
2020/12/01 Python
selenium+超级鹰实现模拟登录12306
2021/01/24 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
怎样让char类型的东西转换成int类型
2013/12/09 面试题
历史学专业个人的自我评价
2013/10/13 职场文书
项目经理任命书范本
2014/06/05 职场文书
国际商务专业求职信
2014/07/15 职场文书
丽江古城导游词
2015/02/03 职场文书
余世维讲座观后感
2015/06/11 职场文书
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android
美元符号 $
2022/02/17 杂记
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers