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 个不同的同名文件)。然而,当没有冲突时,相同的导入工作正常,即它正确地从 submodule3 导入文件 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开发人员可以为我解决这个问题?

4

1 回答 1

3

尝试通过在每个目录中都有一个空__init__.py文件来从目录中创建包,并且每当您想从包中引用特定模块时使用

from submodule import mymodule

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

于 2011-01-05T05:52:11.257 回答