Python学习之模块间互相调用方法详解

本文和大家分享的主要是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学习之模块间互相调用方法详解)