2011-01-05 75 views
1

我有一个python应用程序,它有这样的目录结构。蟒蛇__import __()从2个不同的目录导入,当相同的模块存在于2个位置

-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 

,当我尝试导入蟒蛇工具(从mainpython.py)下submodule3,我从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) 

//下面是名字,如“文件1”它的工作原理(但与上面说的问题,不过,当通过动态的文件名),但如果我将完整的包作为“module1.submodule1.file1”传递失败,并导致一个ImportError说“没有名称为file1的模块”

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

这真的很紧急,我用尽了所有的尝试。希望一些有经验的Python开发人员能为我解决这个问题吗?

+0

您可以请重新格式化您的问题? – 2011-01-05 05:50:14

+2

你为什么使用'__import__'?为什么不从'从module1.submodule3导入filex'? – aaronasterling 2011-01-05 06:11:31

回答

3

尝试通过其具有的空__init__.py文件中的每个创建包你的目录,只要你想从包中引用的特定模块使用

from submodule import mymodule 

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

相关问题