当2个位置中存在相同的模块时,python __import __()从2个不同的目录导入

时间:2011-01-05 05:46:17

标签: python python-2.1

我有一个python应用程序,它具有这样的目录结构。

-pythonapp
   -mainpython.py   
   -module1
      -submodule1
          -file1.py
          -file2.py

      -submodule2
           -file3.py
           -file3.py

      -submodule3
           -file1.py
           -file2.py
           -file5.py
           -file6.py
           -file7.py

当我尝试从submodule3下导入python实用程序(来自mainpython.py)时,我从submodule1获取了初始的2个文件。(请注意,submodule1和3有2个不同的同名文件)。但是,当没有冲突时,同样的导入工作正常,即它正确地从子模块3导入文件5,6,7。

以下是代码:

name=os.path.splitext(os.path.split("module1\submodule3\file1.py")[1])[0] --> file1.py name here is passed dynamically. 

module = __import__(name) 

//这里的名字就像“file1”它的工作原理(但是上面说的问题,但是,当动态传递文件的名称时),但如果我将完整的包传递为“module1.submodule1.file1”它因为ImportError说“没有名为file1的模块”

而失败

现在问题是我们如何告诉解释器只使用“module1.submodule3.file2”下的解释器?我正在使用python

这是非常紧急的,我已经完成了所有尝试。希望一些有经验的python开发人员能为我解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

尝试通过在每个目录中创建一个空__init__.py文件并使用

从包中引用特定模块来创建目录之外的包
from submodule import mymodule

语法。创建包是将模块分成不同命名空间的好方法。并根据其功能命名您的模块,不要将它们作为file1,file2等。