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 相关文章推荐
Python3.2中Print函数用法实例详解
May 19 Python
解决Python出现_warn_unsafe_extraction问题的方法
Mar 24 Python
python使用pil库实现图片合成实例代码
Jan 20 Python
在CMD命令行中运行python脚本的方法
May 12 Python
pycharm远程linux开发和调试代码的方法
Jul 17 Python
Python初学者需要注意的事项小结(python2与python3)
Sep 26 Python
Pytorch卷积层手动初始化权值的实例
Aug 17 Python
调试Django时打印SQL语句的日志代码实例
Sep 12 Python
django实现模板中的字符串文字和自动转义
Mar 31 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
May 07 Python
Python调用ffmpeg开源视频处理库,批量处理视频
Nov 16 Python
python 可视化库PyG2Plot的使用
Jan 21 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 date与gmdate的获取日期的区别
2010/02/08 PHP
PHP自定义大小验证码的方法详解
2013/06/07 PHP
php实现的操作excel类详解
2016/01/15 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
Laravel 6.2 中添加了可调用容器对象的方法
2019/10/22 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
2015/09/12 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
jQuery animate()实现背景色渐变效果的处理方法【使用jQuery.color.js插件】
2017/03/15 Javascript
React Native使用百度Echarts显示图表的示例代码
2017/11/07 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
vue项目刷新当前页面的三种方法
2018/12/04 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
解决vue一个页面中复用同一个echarts组件的问题
2020/07/19 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
python复制文件代码实现
2013/12/23 Python
Python编程argparse入门浅析
2018/02/07 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
python爬取网易云音乐评论
2018/11/16 Python
python实现windows壁纸定期更换功能
2019/01/21 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
美国女性服饰销售网站:Nasty Gal(坏女孩)
2016/07/26 全球购物
机修工岗位职责
2013/11/24 职场文书
公司中秋节活动方案
2014/02/12 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
经销商订货会主持词
2014/03/27 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
党的群众路线教育实践活动教师自我剖析材料
2014/10/09 职场文书
2016大一新生军训心得体会
2016/01/11 职场文书
2016应届毕业生就业指导课心得体会
2016/01/15 职场文书
SQL实现LeetCode(177.第N高薪水)
2021/08/04 MySQL