python学习笔记_第24天(模块)

1544-陈同学

发表文章数:60

热门标签

,
首页 » Python » 正文

包package 的使用

包的概念和结构

当一个项目中有很多个模块时,需要再进行组织。将功能类似的模块放到一起,就形成了“包”。本质上,“包”就是一个必须有__init__.py 的文件夹。
包下面可以包含“模块(module)”,也可以再包含“子包(subpackage)”,每个包里面都有__init__.py 文件。

导入包操作和本质

New–>Python package,创建a,b两个包
python学习笔记_第24天(模块)python学习笔记_第24天(模块)

  • 导入module_AA.py,方式如下:
  1. import a.aa.module_AA
    在使用时,必须加完整名称来引用,如:a.aa.module_AA.fun_AA()
  2. from a.aa import module_AA
    在使用时,直接可以使用模块名。比如:module_AA.fun_AA()
  3. from a.aa.module_AA import fun_AA 直接导入函数
    在使用时,直接可以使用函数名。比如:fun_AA()
    【注】
  • from package import item 语法中,item 可以是包、模块,也可以是函数、类、变量。
  • import item1.item2 这种语法中,item 必须是包或模块,不能是其他。

导入包的本质其实是“导入了包的__init__.py”文件。也就是说,”import pack1”意味着执行了包pack1 下面的__init__.py 文件。这样,可以在__init__.py 中import需要批量导入的模块,执行__init__.py文件时自动导入。

  • init.py 的三个核心作用:
  1. 作为包的标识,不能删除
  2. 用来实现模糊导入(用*导入包)
  3. 可以在__init__.py 文件中做这个包的初始化、以及需要统一执行代码、批量导入

用*导入包

import * 理论上是导入包中所有的子模块,这可能会花长时间等待。Python 提供一个明确的包索引,这个索引由__init__.py 定义__all__ 变量,该变量为一列表。如对 a 包下的__init__.py 中,定义__all__ = [“module_A”,“module_A2”]这意味着, from a import * 只会导入"module_A","module_A2"两个子模块

包内引用

如果是子包内的引用,可以按相对位置引入子模块以aa 包下的module_AA 中导入a包下内容为例:
from … import module_A # …表示上级目录
from . import module_A2 # .表示同级目录

sys.path 和模块搜索路径

当导入某个模块文件时, Python 解释器只有找到这个文件才能读取、装载运行该模块文件。模块搜索一般按照如下路径寻(按照顺序寻找,找到即停,找不到继续往下寻找,直至都找不到报错):

  1. 内置模块
  2. 当前目录(当前文件工作目录下)
  3. 程序的主目录(整个项目下)
  4. pythonpath 目录(已经设置的pythonpath 环境变量)
  5. 标准链接库目录
  6. 第三方库目录(site-packages 目录)
  7. .pth 文件的内容(需要输入:“.pth.”才能正常建立.pth 文件)
  8. sys.path.append() 临时添加的目录,当前有效
    当任何一个python 程序启动时,就将上面这些搜索路径(除内置模块以外的路径)进行收集,放到sys 模块的path 属性中(sys.path),可使用sys.path 查看和临时修改搜索路径。
import sys
sys.path.append("d:/")
print(sys.path)

运行结果:
python学习笔记_第24天(模块)

模块发布和安装

模块的本地发布

  1. 为模块文件创建如下结构的文件夹(一般,文件夹的名字和模块的名字一样):
    python学习笔记_第24天(模块)
  2. 在文件夹中创建一个名为『setup.py』的文件,内容如下:
from distutils.core import setup
setup(
name='baizhanMath2',  # 对外的模块名
version='1.0',  # 版本号
description='这是第一个对外发布的模块,测试哦',  # 模块描述
author='name',  # 作者
author_email='12345678@163.com',  # 邮箱
py_modules=['baizhanMath2.demo1','baizhanMath2.demo2']  # 要发布的模块
)
  1. 右键–Open in Terminal键入命令,执行完毕后会生成发布压缩包
python setup.py sdist

python学习笔记_第24天(模块)

本地安装模块

将发布压缩包安装到本地计算机上,在cmd 命令行模式下操作,进setup.py 所在目录,键入命令:

python setup.py install

安装成功后,进入python 目录/Lib/site-packages 目录(第三方模块都安装的这里,python 解释器执行时也会搜索第三方库目录(site-packages 目录)):
python学习笔记_第24天(模块)
安装成功后,直接使用import 导入即可:

import baizhanMath2.demo1

未经允许不得转载:作者:1544-陈同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《python学习笔记_第24天(模块)》 发布于2021-02-14

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录