У меня возникли проблемы с тем, чтобы мои классы Python работали в консоли Python. Я хочу автоматически импортировать все свои классы в глобальное пространство имен, чтобы я мог использовать их без префикса .module.names.
Вот что у меня пока есть...
projectname/
|-__init__.py
|
|-main_stuff/
|-__init__.py
|-main1.py
|-main2.py
|
|-other_stuff/
|-__init__.py
|-other1.py
|-other2.py
Каждый файл определяет класс с тем же именем, например. main1.py определит класс с именем Main1.
Мой PYTHONPATH
— это абсолютный путь к projectname/.
У меня есть файл запуска Python, который содержит это:
from projectname import *
Но это не позволяет мне вообще использовать мои классы. После запуска консоли Python я хотел бы иметь возможность писать:
ob=Main1()
но Main1 не находится в текущем пространстве имен, поэтому он не работает.
Я попытался добавить что-то в файлы __init__.py
...
In projectname/__init__.py
:
import main_stuff
In projectname/main_stuff/__init__.py
:
import other_stuff
__all__ = ["main1", "main2", "main3"]
И так далее. И в моем файле запуска я добавил:
from projectname.main_stuff import *
from projectname.main_stuff/other_stuff import *
Но чтобы использовать классы в консоли Python, мне все равно нужно написать:
ob=main1.Main1()
Я бы предпочел не нуждаться в части main1.
. Кто-нибудь знает, как я могу автоматически помещать свои классы в глобальное пространство имен при использовании консоли Python?
Спасибо.
==== РЕДАКТИРОВАТЬ ====
Мне нужно импортировать пакет на уровне класса, но from package import *
дает мне все на уровне модуля. Мне нужен простой способ сделать что-то вроде этого:
for module in package do:
from package.module import *
==== ДРУГОЕ РЕДАКТИРОВАНИЕ ====
В итоге я добавил импорт класса в свой файл запуска python по отдельности. Это не идеально из-за накладных расходов на его обслуживание, но оно делает то, что я хочу.
from class1.py import Class1
from class2.py import Class2
from class3.py import Class3