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处理文本文件并生成指定格式的文件
Jul 31 Python
Python中关于字符串对象的一些基础知识
Apr 08 Python
Python排序算法之选择排序定义与用法示例
Apr 29 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
Nov 29 Python
selenium在执行phantomjs的API并获取执行结果的方法
Dec 17 Python
Python标准库使用OrderedDict类的实例讲解
Feb 14 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
python shutil文件操作工具使用实例分析
Dec 25 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
Mar 24 Python
django表单中的按钮获取数据的实例分析
Jul 31 Python
python修改微信和支付宝步数的示例代码
Oct 12 Python
numpy array找出符合条件的数并赋值的示例代码
Jun 01 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
终于听上了直流胆调频
2021/03/02 无线电
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
浅谈ThinkPHP中initialize和construct的区别
2017/04/01 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
js实现div层缓慢收缩与展开的方法
2015/05/11 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
2016/05/27 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
Vue.directive使用注意(小结)
2018/08/31 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
小程序实现短信登录倒计时
2019/07/12 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
Node.js API详解之 Error模块用法实例分析
2020/05/14 Javascript
python登录并爬取淘宝信息代码示例
2017/12/09 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
transform python环境快速配置方法
2018/09/27 Python
python中sort sorted reverse reversed函数的区别说明
2020/05/11 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
python中entry用法讲解
2020/12/04 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
阿联酋彩妆品牌:OUD MILANO
2019/10/06 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
新郎婚宴答谢词
2014/01/19 职场文书
学校政风行风评议工作总结
2014/10/21 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书
写给女朋友的检讨书
2015/05/06 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python