我的文件夹结构:
ttsTacotron.py
Tacotron-2
|..
|tacotron|
|train.py
|synthetizer.py
|...
|synthesize.py # imports hparams.py
|hparams.py
...
当我直接调用synthesize.py
时,它可以正常工作,所有导入都成功处理。当我在synthesize
中导入ttsTacotron.py
并调用它时,它在导入synthesize
的模块时失败。具体来说,导入hparams
失败。
ttsTacotron.py
:
import fire
import sys
import os
import importlib
foobar = importlib.import_module("Tacotron-2.synthesize")
所讨论的Tacotron文件夹为this repository,但该问题不太可能是特定于此的。
注释:我使用importlib处理子文件夹中的-
。由于各种原因,无法真正重命名。
我的目标:能够调用synthetize
的方法并能够从根文件夹中的脚本导入tacotron模块。
答案 0 :(得分:1)
这是因为,当运行ttsTacotron.py
时,Python会在包含ttsTacotron.py
的目录(和系统模块目录中,与此处无关)中查找所有非相对导入的模块。 hparams.py
在Tacotron-2
目录中。最简单的解决方法可能是将Tacotron-2
添加到要在其中查找模块的目录列表中。这也消除了使用importlib
的需要。
import sys
sys.path.insert(1, 'Tacotron-2')
import synthesize as foobar