ModuleNotFoundError: что значит main не является пакетом?



Я пытаюсь запустить модуль из консоли. Структура каталога такая:

enter image description here

Я пытаюсь запустить модуль p_03_using_bisection_search.py С

216   4  

4 ответов:

просто удалите точку для относительного импорта и сделайте:

from p_02_paying_debt_off_in_a_year import compute_balance_after

у меня та же проблема, что и у вас. Я думаю, проблема в том, что вы использовали относительный импорт в in-package import. Нет никакого __init__.py в свой каталог. Так что просто импортируйте, как ответил Моисей выше.

основная проблема, я думаю, когда вы импортируете с точкой, например:

from .p_02_paying_debt_off_in_a_year import compute_balance_after.

это эквивалентно :

from __main__.p_02_paying_debt_off_in_a_year import compute_balance_after .

мы все это знаем __main__ относится к текущему модулю p_03_using_bisection_search.py.

здесь приходит вопрос:

когда переводчик войдет p_03.py сценарий равен :

from p_03_using_bisection_search.p_02_paying_debt_off_in_a_year import compute_balance_after

видимо, p_03_using_bisection_search не содержит никаких модулей или экземпляров с именем p_02_paying_debt_off_in_a_year.

вкратце, интерпретатор не знает вашу архитектуру каталогов.


поэтому я придумал более чистое решение без изменения ценностей среды python (посмотрев вверх, как запросы сделать в относительный импорт):

основная архитектура каталога:

main.py

setup.py

- - -problem_set_02/

------__init__.py

------p01.py

------p02.py

------p03.py

запись __init__.py:

from .p_02_paying_debt_off_in_a_year import compute_balance_after

здесь __main__ и __init__ , это точно относится к модулю problem_set_02.

затем перейдите к main.py:

import problem_set_02

вы также можете написать setup.py для добавления конкретного модуля в среду.

привет пожалуйста, следуйте ниже шаг, вы решите эту проблему. Если вы создали каталог и подкаталог, выполните следующие действия и, пожалуйста, имейте в виду, что все каталоги должны иметь "init.py", чтобы он был распознан как каталог.

  1. " импорт sys "и запустить" sys.путь", вы сможете увидеть весь путь, который находится в поиске по python.Вы должны иметь возможность видеть свой текущий рабочий каталог.

  2. теперь импорт подкаталог и соответствующий модуль, который вы хотите использовать с помощью импорта выполните следующую команду:" import subdir.подкаталог.имя модуля как abc" и теперь вы можете использовать методы в этом модуле. ScreenShotforSameIssue

Как вы можете видеть на этом скриншоте, у меня есть один родительский каталог и два подкаталога, а во вторых подкаталогах у меня есть модуль==CommonFunction и вы видите правую сторону после выполнения sys.путь я вижу свою работу каталог

попробуйте запустить его как:

python3 -m p_03_using_bisection_search

    Ничего не найдено.

Добавить ответ:
Отменить.