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 client使用http post 到server端的代码
Feb 10 Python
python正则表达式中的括号匹配问题
Dec 14 Python
python网络编程之数据传输UDP实例分析
May 20 Python
Python的Django应用程序解决AJAX跨域访问问题的方法
May 31 Python
Python random模块用法解析及简单示例
Dec 18 Python
windows7 32、64位下python爬虫框架scrapy环境的搭建方法
Nov 29 Python
python处理multipart/form-data的请求方法
Dec 26 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
Jun 04 Python
Pycharm小白级简单使用教程
Jan 08 Python
django日志默认打印request请求信息的方法示例
May 17 Python
利用Python pandas对Excel进行合并的方法示例
Nov 04 Python
Python中的协程(Coroutine)操作模块(greenlet、gevent)
May 30 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
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
JavaScript中使用concat()方法拼接字符串的教程
2015/06/06 Javascript
详解JavaScript中setSeconds()方法的使用
2015/06/11 Javascript
jQuery实现提示密码强度的代码
2015/07/15 Javascript
基于javascript实现彩票随机数生成(升级版)
2020/04/17 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
Angular2.js实现表单验证详解
2017/06/23 Javascript
Koa代理Http请求的示例代码
2018/10/10 Javascript
微信公众号生成新浪短网址的实现(快速生成)
2019/08/18 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
jQuery实现简单飞机大战
2020/07/05 jQuery
python实现rest请求api示例
2014/04/22 Python
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
python中的全局变量用法分析
2015/06/09 Python
Django的session中对于用户验证的支持
2015/07/23 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
python安装twisted的问题解析
2018/08/21 Python
python多线程与多进程及其区别详解
2019/08/08 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
2018/09/10 HTML / CSS
台湾乐天市场:日本No.1的网路购物网站
2017/03/22 全球购物
请说出你所知道的线程同步的方法
2013/04/19 面试题
哪些情况下不应该使用索引
2015/07/20 面试题
教师专业自荐书范文
2014/02/10 职场文书
社区学习雷锋活动总结
2014/04/25 职场文书
2014年网管工作总结
2014/12/11 职场文书
材料员岗位职责范本
2015/04/11 职场文书
胡桃夹子观后感
2015/06/11 职场文书
投诉书格式范本
2015/07/02 职场文书
推广普通话的宣传语
2015/07/13 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书
Python办公自动化PPT批量转换操作
2021/09/15 Python