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中lambda函数 list comprehension 和 zip函数使用指南
Sep 28 Python
浅析Python中的多进程与多线程的使用
Apr 07 Python
python实现TF-IDF算法解析
Jan 02 Python
Python模块搜索路径代码详解
Jan 29 Python
Python os.access()用法实例
Feb 18 Python
如何运行.ipynb文件的图文讲解
Jun 27 Python
django将网络中的图片,保存成model中的ImageField的实例
Aug 07 Python
Python调用Windows API函数编写录音机和音乐播放器功能
Jan 05 Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 Python
详细分析Python垃圾回收机制
Jul 01 Python
用python读取xlsx文件
Dec 17 Python
Python结合百度语音识别实现实时翻译软件的实现
Jan 18 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 按位与或 (^ 、&)
2013/06/21 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
thinkPHP5.0框架URL访问方法详解
2017/03/18 PHP
PHP实现可精确验证身份证号码的工具类示例
2018/05/31 PHP
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
Web纯前端“旭日图”实现元素周期表
2017/03/10 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
vue.js获取数据库数据实例代码
2017/05/26 Javascript
JS实现分页浏览横向图片(类轮播)实例代码
2017/11/06 Javascript
three.js加载obj模型的实例代码
2017/11/10 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
微信jssdk踩坑之签名错误invalid signature
2020/05/19 Javascript
Python 分析Nginx访问日志并保存到MySQL数据库实例
2014/03/13 Python
Python标准库之itertools库的使用方法
2017/09/07 Python
Python爬虫实战:分析《战狼2》豆瓣影评
2018/03/26 Python
Django框架之中间件MiddleWare的实现
2019/12/30 Python
python如何调用百度识图api
2020/09/29 Python
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
adidas官方旗舰店:德国运动用品制造商
2017/11/25 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
项目合作计划书
2014/01/09 职场文书
高三霸气励志标语
2014/06/24 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书
利用python做数据拟合详情
2021/11/17 Python
DSP接收机前端设想
2022/04/05 无线电
基于redis+lua进行限流的方法
2022/07/23 Redis