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模块学习 re 正则表达式
May 19 Python
Python异常处理总结
Aug 15 Python
Python使用PyCrypto实现AES加密功能示例
May 22 Python
Python获取CPU、内存使用率以及网络使用状态代码
Feb 08 Python
用python求一个数组的和与平均值的实现方法
Jun 29 Python
flask应用部署到服务器的方法
Jul 12 Python
由面试题加深对Django的认识理解
Jul 19 Python
django-利用session机制实现唯一登录的例子
Mar 16 Python
python代码中怎么换行
Jun 17 Python
selenium+headless chrome爬虫的实现示例
Jan 08 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 Python
python运算符之与用户交互
Apr 13 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
yii框架源码分析之创建controller代码
2011/06/28 PHP
有关php运算符的知识大全
2011/11/03 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
静态图片的十一种滤镜效果--不支持Ie7及非IE浏览器。
2007/03/06 Javascript
ext读取两种结构的xml的代码
2008/11/05 Javascript
JS 判断undefined的实现代码
2009/11/26 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
获取input标签的所有属性的方法
2016/06/28 Javascript
jQuery仿写百度百科的目录树
2017/01/03 Javascript
重新理解JavaScript的六种继承方式
2017/03/24 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
2018/09/18 Javascript
解决百度Echarts图表坐标轴越界的方法
2018/10/17 Javascript
js module大战
2019/04/19 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
js实现div色块碰撞
2020/01/16 Javascript
Python实现的文本编辑器功能示例
2017/06/30 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
python aiohttp的使用详解
2019/06/20 Python
你可能不知道的Python 技巧小结
2020/01/29 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
Python基于yaml文件配置logging日志过程解析
2020/06/23 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
Django解决frame拒绝问题的方法
2020/12/18 Python
美国隐形眼镜网:Major Lens
2018/02/09 全球购物
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2014/02/16 面试题
历史系毕业生自荐信
2013/10/28 职场文书
个人评价范文分享
2014/01/11 职场文书
共产党员批评与自我批评
2014/10/15 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
大学生创业计划书
2019/06/24 职场文书
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
2021/06/05 Python
python运行脚本文件的三种方法实例
2022/06/25 Python