相关的Python模块
问题描述:
我有很多理解python模块导入系统的麻烦。相关的Python模块
我想创建一个简单的文件夹结构如下。
SomeModule
__init__.py
AnotherModule
AnotherModule.py
__init__.py
Utils
Utils.py
__init__.py
要使用SomeModule我可以这样做:
SomeModule.Foo()
现在里面AnotherModule.py我想导入我的Utils目录。
为什么我要做
import SomeModule.AnotherModule.Utils.Foo
为什么我不能只是做
import Utils.Foo
答
要缩短了,你必须在你的代码来调用实际的函数名,可以随时做:
from SomeModule.AnotherModule.Utils import *
虽然这仍然不会让你摆脱一个较短的进口声明在顶部您的脚本,您只需调用其功能名称即可访问.Utils
中的所有功能(即, foo(x)
而不是SomeModule.AnotherModule.Utils.foo(x)
。
冗长导入声明的部分原因来自@wim的评论。在python解释器中输入import this
来查看。
答
把
import sys
import SomeModule.AnotherModule
sys.modules['AnotherModule'] = SomeModule.AnotherModule
在SomeModules __init__.py
因为_explicit优于implicit._ – wim
所以模块必须知道它的完整路径?你不能将模块移动到另一个模块目录而不改变文件中的每个导入? – marsh
如果你感觉很勇敢,你可以在'import .Utils'处去。 – wim