Python在不同目录下导入模块的实现方法


Posted in Python onOctober 27, 2017

python在不同层级目录import模块的方法

使用python进行程序编写时,经常会调用不同目录下的模块及函数。本篇博客针对常见的模块调用讲解导入模块的方法。

1. 同级目录下的调用

目录结构如下:

? src 
|? mod1.py 
|? test1.py

若在程序test1.py中导入模块mod1, 则直接使用

2. 调用子

*import mod1*或from mod1 import *;

目录下的模块

目录结构如下:

? src 
|? mod1.py 
|? lib 
| |? mod2.py 
|? test1.py

这时,如果想在程序test1.py中导入模块mod2.py ,可以在lib件夹中建立空文件__init__.py文件

新的目录结构如下:

? src 
|? mod1.py 
|? lib 
| |?__init__.py 
| |? mod2.py 
|? test1.py

然后使用:

from lib.mod2 import *或import lib.mod2.

3. 调用上级目录下的文件

目录结构如下:

? src 
|? mod1.py 
|? lib 
| |? mod2.py 
|? sub 
| |? test2.py

这里想要实现test2.py调用mod1.py和mod2.py ,做法是我们先跳到src目录下面,直接可以调用mod1,然后在lib上当下建一个空文件__init__.py ,就可以像第二步调用子目录下的模块一样,通过import lib.mod2进行调用了。具体代码如下:

import sys
sys.path.append('C:\\test\\A\\C')
import mod1
import lib.mod2

需要注意的一点是:sys.path添加目录时注意是在windows还是在Linux下,windows下需要‘\\'否则会出错。

补充__init__.py

在python模块的每一个包中,都有一个__init__.py文件(这个文件定义了包的属性和方法)然后是一些模块文件和子目录,假如子目录中也有__init__.py 那么它就是这个包的子包了。当你将一个包作为模块导入(比如从 xml 导入 dom )的时候,实际上导入了它的__init__.py 文件。

一个包是一个带有特殊文件 __init__.py 的目录。__init__.py 文件定义了包的属性和方法。其实它可以什么也不定义;可以只是一个空文件,但是必须存在。如果 __init__.py 不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入或者包含其它的模块和嵌套包。

__init__.py 中还有一个重要的变量,叫做__all__。

如果此时目录如下

? src 
|? mod1.py 
|? lib 
| |? mod2.py 
| |? mod3.py 
| |? sub 
| |? | |? mod3.py

我们有时会使出一招“全部导入”,也就是这样:

from lib import *

这时 import 就会把注册在包__init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。比如:

#文件__init__.py

__all__ = ["mod2", "mod3", "sub"]

以上这篇Python在不同目录下导入模块的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python条件变量之生产者与消费者操作实例分析
Mar 22 Python
Python编程之string相关操作实例详解
Jul 22 Python
python编程培训 python培训靠谱吗
Jan 17 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
Feb 13 Python
Python干货:分享Python绘制六种可视化图表
Aug 27 Python
详解爬虫被封的问题
Apr 23 Python
python开发游戏的前期准备
May 05 Python
Python 处理文件的几种方式
Aug 23 Python
pytorch 模型的train模式与eval模式实例
Feb 20 Python
Django models文件模型变更错误解决
May 11 Python
Python字典dict常用方法函数实例
Nov 09 Python
Python使用struct处理二进制(pack和unpack用法)
Nov 12 Python
Django视图之ORM数据库查询操作API的实例
Oct 27 #Python
浅谈python函数之作用域(python3.5)
Oct 27 #Python
python+pyqt实现右下角弹出框
Oct 26 #Python
python中模块的__all__属性详解
Oct 26 #Python
Python内建函数之raw_input()与input()代码解析
Oct 26 #Python
python分布式环境下的限流器的示例
Oct 26 #Python
Python Nose框架编写测试用例方法
Oct 26 #Python
You might like
PHP 正则表达式常用函数
2014/08/17 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
学习php设计模式 php实现抽象工厂模式
2015/12/07 PHP
关于php unset对json_encode的影响详解
2018/11/14 PHP
jQuery 解析xml文件
2009/08/09 Javascript
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
Node.js自定义实现文件路由功能
2017/09/22 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
vue element动态渲染、移除表单并添加验证的实现
2019/01/16 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
python嵌套函数使用外部函数变量的方法(Python2和Python3)
2016/01/31 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
在linux下实现 python 监控usb设备信号
2019/07/03 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
python 实现二维列表转置
2019/12/02 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
Python __slots__的使用方法
2020/11/15 Python
一个入门级python爬虫教程详解
2021/01/27 Python
利用CSS3伪元素实现逐渐发光的方格边框
2017/05/07 HTML / CSS
阿迪达斯西班牙官方网站:adidas西班牙
2016/07/21 全球购物
全球独特生活方式产品和礼品购物网站:AHAlife
2018/09/18 全球购物
销售人员职业生涯规划范文
2014/03/01 职场文书
安全生产管理责任书
2014/04/16 职场文书
经典毕业生求职信
2014/07/12 职场文书
机械设计专业大学生职业生涯规划书范文
2014/09/13 职场文书
培训师岗位职责
2015/02/14 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
浅谈python数据类型及其操作
2021/05/25 Python
python常见的占位符总结及用法
2021/07/02 Python
canvas实现贪食蛇的实践
2022/02/15 Javascript