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备份文件的脚本
Aug 11 Python
Python单例模式实例分析
Jan 14 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
Jul 24 Python
tensorflow 1.0用CNN进行图像分类
Apr 15 Python
python,Django实现的淘宝客登录功能示例
Jun 12 Python
python Tkinter的图片刷新实例
Jun 14 Python
TensorFlow实现从txt文件读取数据
Feb 05 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
Sep 21 Python
python try...finally...的实现方法
Nov 25 Python
Python常用GUI框架原理解析汇总
Dec 07 Python
解决Pytorch半精度浮点型网络训练的问题
May 24 Python
python numpy中multiply与*及matul 的区别说明
May 26 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 smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
jquery 清空file域示例(兼容个浏览器)
2013/10/11 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
js实现点击链接后窗口缩小并居中的方法
2015/03/02 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
在JS中操作时间之getUTCMilliseconds()方法的使用
2015/06/10 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
2016/09/08 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
vue-cli3中配置alias和打包加hash值操作
2020/09/04 Javascript
Python随机生成数模块random使用实例
2015/04/13 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
基于ID3决策树算法的实现(Python版)
2017/05/31 Python
Python pycharm 同时加载多个项目的方法
2019/01/17 Python
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
人力资源行政经理自我评价
2013/10/23 职场文书
普通院校学生的自荐信
2013/11/27 职场文书
网上签名寄语活动留言
2014/01/18 职场文书
电子装配专业毕业生求职信
2014/04/23 职场文书
成立公司计划书
2014/05/07 职场文书
党员自我评议对照检查材料
2014/09/27 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
总经理岗位职责
2015/02/04 职场文书
2015年企业员工工作总结范文
2015/05/21 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
Go语言特点及基本数据类型使用详解
2022/03/21 Golang
Mysql使用全文索引(FullText index)的实例代码
2022/04/03 MySQL