技术开发 频道

Python知识:包的模块导入

  【IT168 技术文档】这里所讲不是用import名令,而是讲用__import__函数。

  如果我们有一个testa.py文件,我们可以用module=__import__('testa')来导入它。这样可以用module.属性来使用testa.py中的属性。如果我们有一个包,如:

  在当前子目录下有一个名为:modules的目录,其中有__init__.py,testa.py两个文件。

  因为在modules目录下有__init__.py文件,所以目录modules可以视为一个包,即将整个目录作为一个模块(象java一样)。如果想导入testa.py,则可以使用import modules.testa.py

  但如果使用__import__函数,情况有变化(可以参考文档中关于__import__的说明)。大概就是:使用__import__导入包形式的模块,如module=__import__('modules.testa'),此时返回的不是testa模块的对象,而是包的对象,所以想导入 testa可以使用文档中的方法:

  def my_import(name):   mod = __import__(name)   components = name.split('.')   for comp in components[1:]:   mod = getattr(mod, comp)   return mod

  (我只试验了一层,多层的并未测试,有兴趣的可以把结果告诉我)

0
相关文章