В чем заключается ошибка в создании библиотеки?

Добрый день!

У меня возникли проблемы с вашей установленной библиотекой на Pypi. У меня есть структура библиотеки, которая включает файлы `__init__.py` и `main.py`. В `__init__.py` я пытаюсь импортировать все из `main.py` используя следующую команду: `from main import *`. Однако, когда я устанавливаю библиотеку и пытаюсь импортировать класс, мне приходится писать `from LibName.main import Class` вместо `from LibName import Class`, что является неожиданным.

Можете ли вы помочь мне выяснить, в чем моя ошибка? Я следовал руководствам, и у них все работает так, как ожидается.
  • 17 октября 2023 г. 18:10
Ответы на вопрос 1
Ошибкой в вашем случае является использование `from main import *` в файле `__init__.py`. 

Когда вы выполняете `from LibName.main import Class`, вы на самом деле импортируете модуль `main` из пакета `LibName`. 

Если ваша структура библиотеки выглядит примерно так:

```
LibName/
    __init__.py
    main.py
```

Правильное использование будет следующим:

1. В файле `__init__.py` можно использовать:

```python
from .main import Class
```

2. В вашем пользовательском коде вы сможете импортировать класс следующим образом:

```python
from LibName import Class
```

Таким образом, `__init__.py` должен использовать относительный импорт (`from .main import Class`), чтобы корректно импортировать `Class` в пакете `LibName`, а пользовательский код будет использовать абсолютный импорт (`from LibName import Class`), чтобы импортировать класс из пакета `LibName`.

Это правильный путь, чтобы иметь возможность импортировать классы и другие объекты, определенные в пакете, используя `from LibName import Class`.
Похожие вопросы