1把模块按层次结构组织成包

只需确保每个目录中都定义了__init__.py即可。

2对所有符号的导入进行精确控制

当用户使用from module import * 语句时,我们希望对从模块或包中导入的符号进行精确控制。

在模块中定义一个变量__all__,用来显示列出可导出的符号名。

__all__ = ["spam","grok"]

3使用相对名称来导入包中的子模块

mypackage/
__init__.py
A/
__init__.py
spam.py
grok.py
B/
__init__.py
bar.py #spam.py
from . import grok
from ..B import bar

使用该方法来导入包内模块,可以很好的减少硬编码导入模块,如果使用绝对名称导入,如果最顶端的文件名变化所有的导入都将出现问题。

ps.

执行脚本出现导入错误时  python3 -m mypackage

4将模块分解成多个文件

在不破坏使用结构的情况下,将一个模块分解成多个模块

首先将模块变成包,在包内__init__.py文件内将子模块导入。

5让各个目录下的代码在统一的命名空间下导入

foo_package/
spam/
blah.py
bar_package/
spam/
grok.py import sys
sys.path.extend(["foo_package","bar_package"])
import spam.blah
import spam.grok

在这两个目录中 spam作为公共的命名空间,注意这两个目录中都没有__init__.py文件。

6重新加载模块

开发环境中使用,尽量不在生产环境使用

import imp
import math
imp.reload(math)

7让目录或zip文件成为可运行的脚本

myapplication/
spam.py
bar.py
grok.py
__main__.py python myapplication 如果包含__main__.py文件,就可以当作脚本来运行,会运行__main__.py里的方法

8读取包中的数据文件

mypackage/
__init__.py
somedata.dat
spam.py import pkgutil
data = pkgutil.get_data(__package__,"somedata.dat") # data会得到一个字节串

9添加目录到sys.path中

三种解决方案,第一种是使用PYTHONPATH环境变量来添加。

env PYTHONPATH = /some/dir:/other/dir python3

第二种是通过创建.pth文件,将.pth文件放在python的site_packages

#mtapplication
/some/dir
/other/dir

第三种是硬编码到代码中

import sys
sys.path.insert(0,"/some/dir")
sys.path.insert(0,"/other/dir")

10使用字符串中给定的名称来导入模块

import importlib
math = importlib.import_module("math")

cookbook_模块和包的更多相关文章

  1. python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...

  2. Python中函数、类、模块和包的调用

    初学python阶段,大多数人对函数.类.模块和包的调用都搞得不是很清楚,这篇随笔就简单的进行说明. (1)函数 当函数定义好之后,可以直接调用. 比如:def summ(add1,add2),那么 ...

  3. Python模块和包

    模块和包是python组织代码的基本方式. 模块: python的每一个脚本文件都可称之为模块,模块的名称就是脚本的文件名.例如当我们写了一个test.py的脚本文件,则可以在同目录下的另外一个脚本m ...

  4. python模块与包的导入

    1. 模块与包的区别 模块,即module,一个包含python语句的.py文件就是一个模块!每个源代码文件都会自动成为模块!没有额外的语法用来声明模块. 包,又称模块包,即module packag ...

  5. python模块及包的导入

    一.模块 通常模块为一个文件,直接使用import来导入就好了.可以作为module的文件类型有".py".".pyo".".pyc".&q ...

  6. 简述Python模块和包

    我们常常会使用别人写的包,假如我们使用的是Python3.4版本,安装在windows的C盘根目录下,那么外部的包一般放在:C:\Python34\Lib\sit-packages下,此目录下有以.p ...

  7. python 深入模块和包

    模块可以包含可执行语句以及函数的定义. 这些语句通常用于初始化模块. 它们只在 第一次 导入时执行.只在第一次导入的时候执行,第一次.妈蛋的第一次...后面再次导入就不执行了. [1](如果文件以脚本 ...

  8. Python中的模块与包

    标准库的安装路径 在import模块的时候,python是通过系统路径找到这些模块的,我们可以将这些路径打印出来: >>> pprint.pprint(sys.path) ['', ...

  9. Python类、模块、包的区别

    类 类的概念在许多语言中出现,很容易理解.它将数据和操作进行封装,以便将来的复用. 模块 模块,在Python可理解为对应于一个文件.在创建了一个脚本文件后,定义了某些函数和变量.你在其他需要这些功能 ...

随机推荐

  1. python算法与数据结构-什么是数据结构

    一.什么是数据结构 数据结构,直白地理解,就是研究数据的存储方式. 我们知道,数据存储只有一个目的,即为了方便后期对数据的再利用,就如同我们使用数组存储 {1,2,3,4,5} 是为了后期取得它们的值 ...

  2. 编解码器之战:AV1、HEVC、VP9和VVC

    视频Codec专家Jan Ozer在Streaming Media West上主持了一场开放论坛,邀请百余名观众参与热门Codec的各项优势与短板.本文整理了讨论的主要成果,基本代表了AV1.HEVC ...

  3. Kafka 学习之路(四)—— Kafka消费者详解

    一.消费者和消费者群组 在Kafka中,消费者通常是消费者群组的一部分,多个消费者群组共同读取同一个主题时,彼此之间互不影响.Kafka之所以要引入消费者群组这个概念是因为Kafka消费者经常会做一些 ...

  4. 【JAVA】我的爬虫

    简介:不是很智能的爬虫,效率慢,仅用作自娱自乐,需要观察目标网站的页面然后修改相关正则去获取自己想要的数据 环境:需要Http-client相关jar包,如下,可以去我的下载链接下载: https:/ ...

  5. package.json 详解

    使用package.json  属性说明 name - 包名. version - 包的版本号. description - 包的描述. homepage - 包的官网 url . author - ...

  6. Linux下编译PHP常见错误及解决方法

    1.configure: error: xml2-config not found. Please check your libxml2 installation.yum install libxml ...

  7. CentOS7.3安装JIRA7.10

    准备工作:下载相关安装包,上传到服务器/opt/apps目录下 链接:https://pan.baidu.com/s/15Y5Y3X6AX2ZokWkZKcRrQQ 密码:q0lw 1.安装数据库 y ...

  8. Python机器学习经典实例电子版和附带源码

    Python机器学习经典实例电子版和附带源码 下载:https://pan.baidu.com/s/1m6ODNJk--PWHW8Vdsdjs-g 提取码:nyc0 分享更多python数据分析相关电 ...

  9. 从0x00到0xFF的含义

    对于二进制来说,8位二进制我们称之为一个字节,二进制的表达范围值是从0b00000000-0b11111111,而我们程序中用十六进制表示的时候就是从0x00到0xFF,这里教大家一个二进制转换十进制 ...

  10. 分布式事务(1)---2PC和3PC理论

    分布式事务(1)---2PC和3PC理论 分布式事物基本理论:基本遵循CPA理论,采用柔性事物特征,软状态或者最终一致性特点保证分布式事物一致性问题. 分布式事物常见解决方案: 2PC两段提交协议 3 ...