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获取目录下所有文件的方法
Jun 01 Python
python实现八大排序算法(1)
Sep 14 Python
python机器学习之决策树分类详解
Dec 20 Python
查看django版本的方法分享
May 14 Python
Python装饰器限制函数运行时间超时则退出执行
Apr 09 Python
Django认证系统实现的web页面实现代码
Aug 12 Python
Python监控服务器实用工具psutil使用解析
Dec 19 Python
django Layui界面点击弹出对话框并请求逻辑生成分页的动态表格实例
May 12 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
Dec 04 Python
java关于string最常出现的面试题整理
Jan 18 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 Python
实操Python爬取觅知网素材图片示例
Nov 27 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独立Session数据库存储操作类分享
2014/06/11 PHP
PHP中使用正则表达式提取中文实现笔记
2015/01/20 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
php中关于换行的实例写法
2019/09/26 PHP
用JavaScript显示随机图像或引用
2009/04/21 Javascript
DOM 基本方法
2009/07/18 Javascript
JavaScript 入门基础知识 想学习js的朋友可以参考下
2009/12/26 Javascript
TextArea不支持maxlength的解决办法(jquery)
2011/09/13 Javascript
js捕获鼠标滚轮事件代码
2013/12/16 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
基于JS实现移动端左滑删除功能
2017/07/28 Javascript
vue+webpack 更换主题N种方案优劣分析
2019/10/28 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
Python中使用pypdf2合并、分割、加密pdf文件的代码详解
2019/05/21 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
森海塞尔美国官网:Sennheiser耳机与耳麦
2017/07/19 全球购物
NFL墨西哥官方商店:Tienda NFL
2017/11/28 全球购物
Nili Lotan官网:Nili Lotan同名品牌
2018/01/07 全球购物
介绍一下Transact-SQL中SPACE函数的用法
2015/09/01 面试题
如何通过jdbc调用存储过程
2012/04/19 面试题
应届毕业生个人自我评价
2013/09/20 职场文书
本科生求职简历的自我评价
2013/10/21 职场文书
小学后勤管理制度
2014/01/14 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
教师节主持词开场白
2015/05/29 职场文书
胡桃夹子观后感
2015/06/11 职场文书
小学班主任心得体会
2016/01/07 职场文书