我的目录结构如下所示:
\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:
如果我在Submodule
(File1
的{{1}}的副本)中制作Submodule
并在Module
文件中执行File1
在from File1 import File1
中,它有效。
但如果我执行__init__
或Submodule
,则无效。我很困惑。
答案 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()