如何在Python中将子模块调用重定向到父模块

时间:2016-06-20 21:02:51

标签: python import

我的目录结构如下所示:

\Module
      |
      __init.py__ (from File1 import File1...)
      File1.py
      File2.py
      \Submodule
              |
               __init.py__ (Empty right now)  

我可以Module.File1.run()

但我想Module.Submodule.File1.run()并将其重定向到Module的{​​{1}}。

有办法做到这一点吗?或者我是否必须将所有File1个文件复制到Module

编辑1:

如果我在SubmoduleFile1的{​​{1}}的副本)中制作Submodule并在Module文件中执行File1from File1 import File1中,它有效。

但如果我执行__init__Submodule,则无效。我很困惑。

3 个答案:

答案 0 :(得分:1)

如果您使用的是* nix系统,则只需创建符号链接即可。在CLI上,使用ln -s

ln -s ./Module/File1.py ./Module/Submodule/

这将创建一个名为./Module/Submodule/File1.py的符号链接,指向原始File1.py

修改

另一种方法是在子模块的__init__.py中导入文件。在./Module/Submodule/__init__.py

from .. import File1

然后你可以访问它

import Module.Submodule
Module.Submodule.File1.run()

答案 1 :(得分:1)

从语法上讲,这是如何做到的:

+

这就是你所说的:

\Module
      |
      __init.py__ (from File1 import File1...)
        > import Submodule
      File1.py
        > def run():
        >   print "RUNNING"
      \Submodule
              |
               __init.py__
                > from Module import File1

我认为你可能会从不同的结构中受益。

答案 2 :(得分:1)

只需将Module.Submodule.File1设为Module.File1

import Module.File1
import Module.Submodule

Module.Submodule.File1 = Module.File1

现在可行:

Module.Submodule.File1.run()