我想从应用程序特定的终端(在这个例子中是Maya,但最终可能会有其他应用程序)导入一个模块。我从git上下载了一个项目,并且我的目录结构如下:
modulename
submodule
__init.py__
subsubmodule
...
submodule
...
__init.py__
modulename.py
然后在我的执行 shell 中,我尝试导入该模块以在 shell 上使用,所以我有:
import sys,os
modulepath = 'C:/path/to/module'
sys.path.append(modulepath)
import modulename
如果导入的 modulename.py 是空白的,则一切正常。然而,模块的前两行是模块尝试导入自身(我不知道为什么,因为这是别人的项目,但似乎对结构很重要)。
import sys,os
import modulename from modulename as mod
这将会出现错误:
# Error: ImportError: cannot import name modulename#
仅此而已,没有其他步骤。
最终,我想知道为什么一个模块不能导入自身,以及如何解决这个问题?
我读到过一个模块认为它自己被命名为main,因此相对导入不起作用,如果是这种情况,我会期望:
import __main__ as mod
要代替它工作,但也存在错误:
# Error: ImportError: Cannot re-init internal module __main__ #
这完全有道理。
[问题是,我如何从模块本身导入一个模块?]
from modulename import modulename as mod
吗? - Kobi K