Как использовать собственные пакеты Python в собственных пакетах? ModuleNotFoundError: ни один модуль не назван

Я создал код, используя следующую структуру:

      ├── project
|  ├── .vscode
|  |   └── settings.json
|  ├── packages
|  |   ├── __init__.py
|  |   ├── module_one.py
|  |   └── module_two.py
|  └── main.py

module_one контент

      def functionModuleOne():
    print('functionModuleOne')

module_two content

      import module_one
module_one.functionModuleOne()

def functionModuleTWO():
    print('functionModuleTWO')

основное содержание

      from package import module_two

Дело в том, что я пытаюсь импортировать «module_one» внутрь «module_two». У меня есть некоторые ошибки, потому что, по-видимому, я должен указать путь к модулям в .vscode / settings.json. Итак, я сделал это

Внутри json есть то, что есть:

      {
    "python.analysis.extraPaths": [".\\package"]
}

Тогда, видимо, все работало нормально. Я выполнил файл "module_two.py", и у меня нет ошибок.

Однако, когда я попытался выполнить файл «main.py», я получил следующую ошибку: ModuleNotFoundError: Нет модуля с именем «module_one» .

Мне нужна эта структура, потому что «module_two» нужно импортировать функции из «module_one», а «main» нужно импортировать функции из «module_two».

Я действительно не знаю, что происходит. Я все перепробовал и искал в сети, но безрезультатно.

Я был бы так рад, если бы кто-нибудь из вас мог мне помочь.

2 ответа

Решение

Причина в том, что при импорте методов в другие файлы VS Code по умолчанию начинает поиск из родительской папки импортированного файла. Очевидно, что в файле «main.py» он не может найти файл «module_one» согласно «import module_one».

Вы можете обратиться к следующим методам: Используйте следующий код в файле "module_two":

      import sys 
sys.path.append("./")

from emo.module_one import functionModuleOne
functionModuleOne()

def functionModuleTWO():
    print('functionModuleTWO')

" from emo.module_one import functionModuleOne": (" main.py "может найти" module_one "по этому пути.),

" sys.path.append("./")": Добавьте путь к файлу" module_one "к пути" module_two ".

Запустите main.py:

Я предполагаю, что ошибка отображается только из-за буквы ...

Отредактируйте эту часть и попробуйте:

      from packages import module_two

Ошибка возникает из-за того, что вы сохранили папку с именем "packages" и пытаетесь импортировать module_two из "package", поэтому выдает ошибку ..

Сообщите мне, если это сработает :)

Другие вопросы по тегам