Возможно, даже если вы импортируете модуль data
из модуля autoencoder
, который находится в той же папке, он не работает, потому что путь поиска модулей всегда является контуром, содержащим первый файл, который запускается, поэтому путь run.py
в твоем случае. И autoencoder
, и data
находятся в подкаталоге ae
.
Вы импортировали autoencoder
из run.py
делает: import ae.autoencoder
Вы можете импортировать data
таким же образом: импорт ae.data
Becase он по-прежнему относится к пути run.py
так что вы должны войти в каталог ae
.
Если вы хотите, чтобы не упоминать папку все время, вы можете добавить каталог ae
в системный путь.
Open run.py
, то вам нужен модуль os
, что вы уже импортированные, а также импортировать sys
модуль,
затем:
sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "./ae")
Так вы run.py файл должен выглядеть это:
import os
import shutil
import sys
sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "./ae")
import autoencoder
def main():
pass
if __name__ == "__main__":
main()
И ваш autoencoder.py должен выглядеть следующим образом:
import data
Если вы используете IDE, и вы пытаетесь метод sys.path.append
он может показать, как модули autoencoder
и data
не найдены в IDE, но на самом деле они находятся во время выполнения после того, как их путь включен, поэтому он должен работать.
Другой способ загрузки модуля, расположенного в той же директории:
from . import module_name
Если вам необходимо импортировать множество модулей или импортировать модули во время выполнения рекомендуется использовать имп (теперь устарел) или importlib модуль.
Для Python 3.5 и более поздней:
import importlib.util
spec = importlib.util.spec_from_file_location("module_name", "/path/to/file")
foo = importlib.util.module_from_spec(spec)
spec.loader.exec_module(foo)
foo.MyClass()
Для Python 3.3 и 3.4:
from importlib.machinery import SourceFileLoader
foo = SourceFileLoader("module_name", "/path/to/file").load_module()
foo.MyClass()
Для Python 2:
import imp
foo = imp.load_source('module_name', '/path/to/file')
foo.MyClass()
Попробуйте 'из. import data' – vaultah
не должен быть просто 'import data', а не' import data.py' –
Возможно даже 'от импорта данных *' –