Пользовательский модуль Python не импортирует

Кажется, я не могу пройти мимо этого и не совсем понимаю, что происходит. У меня есть каталог с двумя файлами класса. Используя REPL из этого каталога, я могу импортировать оба файла и выполнять их логику. Из их родительского каталога, из которого main () запускается, однако, только один файл класса является видимым, pagetable.

Структура проекта в настоящее время,

project/ src/ __init__.py # empty pagingsimulation.py # main() imports memory process.py memory/ __init__.py # imports pagetable.py pagetable.py # visible page.py # error 

pagingsimulation.py удалось импортировать память / и создать pagetable.PageTable, но как только я создал page.py и имел pagetable.py import page.py, pagingsimulation.py теперь выдает эту ошибку при выполнении.

 Traceback (most recent call last): File "pagingsimulator.py", line 5, in <module> import memory File "src/memory/__init__.py", line 1, in <module> from .pagetable import PageTable File "src/memory/pagetable.py", line 1, in <module> import page ImportError: No module named 'page' 

в памяти / __ init__.py В настоящее время у меня есть,

  from .pagetable import PageTable 

… но безуспешно пробовал многие другие варианты.

Я пробовал несколько подходов и некоторое время исследовал это, и, возможно, это то, чего я просто не вижу на данный момент. Что мешает импортировать мои собственные модули при запуске из main ()?

One Solution collect form web for “Пользовательский модуль Python не импортирует”

Решение, как я подозревал, было проблемой, связанной с путями, и более конкретно в отношении того, как модули взаимодействуют после импорта в родительский файл pagingsimulation.py.

Поэтому для решения этой проблемы это не имело никакого отношения к __init__.py, а скорее к тому, как я обращался к page.py из pagetable.py

Поэтому pagingsimulator.py использует,

 import memory 

И в памяти, файл init.py имеет,

 from .pagetable import PageTable 

Чтобы страница PageTable имела доступ к странице, должно было быть указано выражение импорта,

 from memory import Page 

Мне кажется немного напуганным для меня, и после неудачных попыток я хотел бы сказать, что есть более чистый способ сделать это, но пока я возьму свою победу и надеюсь, что оставить этот вопрос здесь принесет пользу кому-то другому, поскольку я не смог найти что-то подобное во время моего поиска.

  • Есть ли способ уловить исключения с PyCharm?
  • Условно оцененные операторы отладки в Python
  • Как ограничить трассировку python для определенных файлов
  • проверить, какие файлы открыты в Python
  • Как отслеживать ошибки протоколирования?
  • Trace Bug, который иногда встречается только в CI
  • trace python: включить только некоторые файлы
  • Предложения для инструментов отладки Python?
  • Выход из Python Debugger ipdb
  • Как я могу быстро отключить инструкцию try в python для тестирования?
  • Отладчик Python работает в генераторах?
  • Python - лучший язык программирования в мире.