当前位置:首页 > 未命名 > 正文内容

Python中关于模块之间互相调用的总结

u3blog7年前 (2017-08-27)未命名385

问题

在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里能运行,命令行各种报错的情况

扫描二维码推送至手机访问。

版权声明:本文由u3blog发布,如需转载请注明出处。

本文链接:https://u3blog.xyz/?id=680

分享给朋友:
返回列表

上一篇:Kotlin学习小节

没有最新的文章了...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。