'ModuleNotFoundError' 尝试从导入的脚本导入脚本时

'ModuleNotFoundError' when trying to import script from imported script

我的文件夹结构:

ttsTacotron.py
Tacotron-2
|..
|tacotron|
         |train.py
         |synthetizer.py
         |...
|synthesize.py # imports hparams.py
|hparams.py
...

当我直接调用 synthesize.py 时它工作正常,它的所有导入都已成功处理。当我在 ttsTacotron.py 中导入 synthesize 并调用它时,导入 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 模块。

这是因为,当 运行 ttsTacotron.py 时,Python 在包含 ttsTacotron.py 的目录中查找所有 non-relative 导入的模块(以及在系统中模块目录,此处不相关),但 hparams.py 位于 Tacotron-2 目录中。最简单的修复可能是将 Tacotron-2 添加到查找模块的目录列表中;这也消除了使用 importlib.

的需要
import sys
sys.path.insert(1, 'Tacotron-2')

import synthesize as foobar