Python学习之模块间互相调用方法详解
2017-08-28 22:32
639 查看
本文和大家分享的主要是python中模块间互相调用相关知识,一起来来了吧,希望对大家学习python有所帮助。
问题
在python里,假设我们有两个模块,A,B,在模块a中有文件a1,模块b中有文件b1.
结构如下
–a
—a1
–b
—b1
那么,在b1文件中调用a1里的方法,就会出现import
error,告诉我们找不到这个模块
解决方法
对于这类问题解决方法很简单,由于他们的父级目录都是相同的,我们只需要在模块a中加入一个空的文件 init.py(必须是这个名字,下划线前后都是两个),就可以将目录a转化为libroot。我们的调用这时候也就可以进行了。
更复杂的情况
上面的情况比较简单,但是往往我们使用的过程中会有更加复杂的情况,比如下面
–MyProject
—a
—-a1
—b
—-c
—–d
——d1
此时,d1调用a1中的方法,即使加入了 init .py也是行不通的。我们需要用一些手段把a1所在目录父级路径加入d1的搜索路径
解决方法
正如上面所说,我们需要把包a的父级路径加入到d1的搜索路径里去,怎么实现呢?很简单,使用os包,代码如下
import os
import sys
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
sys.path.append('/home/u3/app/MyProject')
上面代码中/home/u3/app/MyProject就是我们需要添加的内容,即包a的父级路径,各位在使用的时候换成自己的路径就行了
IDE提醒
使用了上面两种方法后,就可以消除大多数的import error找不到的情况了,需要注意的是,在ide中,这些步骤都是ide来完成的,所以会出现,ide里能运行,命令行各种报错的情况。
来源:u3coding
问题
在python里,假设我们有两个模块,A,B,在模块a中有文件a1,模块b中有文件b1.
结构如下
–a
—a1
–b
—b1
那么,在b1文件中调用a1里的方法,就会出现import
error,告诉我们找不到这个模块
解决方法
对于这类问题解决方法很简单,由于他们的父级目录都是相同的,我们只需要在模块a中加入一个空的文件 init.py(必须是这个名字,下划线前后都是两个),就可以将目录a转化为libroot。我们的调用这时候也就可以进行了。
更复杂的情况
上面的情况比较简单,但是往往我们使用的过程中会有更加复杂的情况,比如下面
–MyProject
—a
—-a1
—b
—-c
—–d
——d1
此时,d1调用a1中的方法,即使加入了 init .py也是行不通的。我们需要用一些手段把a1所在目录父级路径加入d1的搜索路径
解决方法
正如上面所说,我们需要把包a的父级路径加入到d1的搜索路径里去,怎么实现呢?很简单,使用os包,代码如下
import os
import sys
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
sys.path.append('/home/u3/app/MyProject')
上面代码中/home/u3/app/MyProject就是我们需要添加的内容,即包a的父级路径,各位在使用的时候换成自己的路径就行了
IDE提醒
使用了上面两种方法后,就可以消除大多数的import error找不到的情况了,需要注意的是,在ide中,这些步骤都是ide来完成的,所以会出现,ide里能运行,命令行各种报错的情况。
来源:u3coding
相关文章推荐
- python与C互相调用的方法详解
- python学习——python os.path模块常用方法详解
- python os.path模块常用方法详解
- python os.path模块常用方法详解
- python学习五:执行linux命令的两种方法、提高运行效率、进制转换、切片详解、ip和mac获取
- 继承父类,调用父类中的方法 分类: python 小练习 python基础学习 2014-01-10 17:54 325人阅读 评论(0) 收藏
- 详解Python模块导入方法
- 详解Python模块导入方法
- python利用字典保存配置实现动态调用模块类方法
- 不安装python运行python文件或者是用其他语言调用python模块的方法
- open()文件对象的seek、tell方法详解 分类: python基础学习 open()文件读写 python Module 2013-09-05 09:40 450人阅读 评论(0) 收藏
- Python调用C/C++动态链接库的方法详解
- 模块间互相调用的一种方法
- python os.path模块常用方法详解
- python 调用shell命令三种方法 分类: python基础学习 python Module 2014-01-13 14:13 239人阅读 评论(0) 收藏
- C#调用存储过程的方法,和简单存储过程创建的方法实例。【转载】为入门的朋友引路,大家互相学习。
- python学习四:import模块方法、可变参数、字典key判断、版本信息获取、列表解析、
- Python模块学习之字符串方法——Python学习手册笔记
- [python]python 动态调用模块&类&方法
- python调用C模块的方法