Невозможно использовать абсолютный импорт для получения объектов из пакета __init__.py (несмотря на настройку PYTHONPATHPython

Программы на Python
Ответить
Anonymous
 Невозможно использовать абсолютный импорт для получения объектов из пакета __init__.py (несмотря на настройку PYTHONPATH

Сообщение Anonymous »

(Ни этот вопрос, ни этот вопрос не являются дубликатами — все они разрешаются путем правильной установки PYTHONPATH.)
У меня есть базовая файловая структура пакета Python:

Код: Выделить всё

.
├── main.py
└── mypackage/
├── __init__.py
└── mysubmodule/
├── __init__.py
└── calc.py
где mypackage/__init__.py содержит глобальную переменную (или что-нибудь, что мне нужно там определить, например реестр модулей pint):

Код: Выделить всё

myglobalvariable = 42
и mypackage/mymodule/calc.py использует абсолютный импорт для получения глобальной переменной из пакета __init__.py:

Код: Выделить всё

from mypackage import myglobalvariable
К сожалению, это не работает. Когда я запускаю main.py:

Код: Выделить всё

import mypackage.mymodule.calc as calc
Я получаю ошибку ModuleNotFoundError:

Код: Выделить всё

{
"name": "ModuleNotFoundError",
"message": "No module named 'mypackage'",
"stack": "---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
File /Users/myusername/Downloads/test/mypackage/main.py:3
1 # %%
----> 3 import mypackage.mymodule.calc as calc

ModuleNotFoundError: No module named 'mypackage'"
}
Я проверил PYTHONPATH текущего интерпретатора с помощью sys.path... и он должен захватить каталог mypackage:

Код: Выделить всё

[
'/Users/myusername/Downloads/test/mypackage/src',
'/Users/myusername/Downloads/test/mypackage',
'/opt/homebrew/Caskroom/miniconda/base/envs/mycondaenv/lib/python313.zip',
'/opt/homebrew/Caskroom/miniconda/base/envs/mycondaenv/lib/python3.13',
'/opt/homebrew/Caskroom/miniconda/base/envs/mycondaenv/lib/python3.13/lib-dynload',
'',
'/opt/homebrew/Caskroom/miniconda/base/envs/mycondaenv/lib/python3.13/site-packages'
]
...так что я делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/792 ... -despite-p
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»