ModuleNotFoundError при попытке импортировать скрипт из импортированного скрипта - PullRequest
1 голос
/ 03 июня 2019

Структура моей папки:

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, о которой идет речь, является этот репозиторий , но проблема вряд ли будет специфической для него.

Замечания: я использую importlib для обработки наличия - в подпапке. Не могу переименовать его по разным причинам.

Моя цель: уметь вызывать методы synthetize и иметь возможность импортировать модули такотрона из скрипта, который находится в корневой папке.

1 Ответ

1 голос
/ 03 июня 2019

Это потому, что при запуске ttsTacotron.py Python просматривает все не относительные импортированные модули в каталоге, содержащем ttsTacotron.py (и в каталогах системных модулей, что здесь не актуально), но hparams.py - это в каталоге Tacotron-2. Самое простое решение - добавить Tacotron-2 в список каталогов, в которых ищутся модули; это также устраняет необходимость использования importlib.

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

import synthesize as foobar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...