Attributeerror: модуль '' не имеет атрибута '__path__'

У меня проблема, и я не знаю, как ее отлаживать.

У меня есть проект с разными целями, в том числе с использованием Python 3. Я создал пакет Python с именем упаковка. Каталог верхнего уровня пакета находится внутри мойпроект / питон /. В файловой системе он имеет следующую структуру:

- /home/myuser/myproject/python
--- package/
------ __init__.py
------ myutil.py
------ sub_package/
---------- __init__.py
---------- sub_sub_package/
-------------- __init__.py
-------------- myscript.py

Все файлы __init__.py пустые, за исключением корневого (пакет / __ init__.py), который имеет следующее содержимое:

from . import myutil

Все идет нормально. Файл myscript.py на самом деле является сценарием Python для непосредственного запуска. Поскольку он находится внутри пакета, я выполняю его как таковой:

cd /home/myuser/myproject/python
python -m package.sub_package.sub_sub_package.myscript

Теперь самое странное. Скрипт работает как положено. Однако после завершения программы я получаю следующее сообщение:

/usr/bin/python3: Error while finding module specification for 
'package.sub_package.sub_sub_package.myscript.py'
(AttributeError: module 'package.sub_package.sub_sub_package.myscript' 
has no attribute '__path__')

Я искал в Интернете, но безрезультатно. Не могу понять, что вызывает это сообщение и как его решить. Я предполагаю, что это какое-то неясное поведение обработки импорта Python 3, но понятия не имею. Любая помощь приветствуется.

Взгляните на решение в этой теме -> stackoverflow.com/questions/54030519/… Ура

Corkscrew 24.07.2019 15:37
12
1
19 050
2

Ответы 2

у вас нет файла __init__.py в последнем каталоге sub_sub_package

попробуйте добавить туда пустой файл __init__.py

Я сделал это, поведение кажется таким же.

Blitzkoder 13.09.2018 18:15

это похоже на эту проблему stackoverflow.com/questions/36230492/…

Landar 13.09.2018 18:21

Ну, я это уже видел. Основная проблема в ответе на этот вопрос заключалась в использовании флага , что я уже делаю.

Blitzkoder 13.09.2018 18:25

Два способа запустить скрипт Python 3 с именем файла «fibo.py»:

Аргументом является имя файла .py.

python fibo.py

Аргумент - это имя модуля Python без .py.

python -m fibo

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