Я не уверен, как отсортировать мои import
заявления в следующей ситуации:
main.py
folder/
__init__.py
a.py
b.py
a.py
:
class Base(object):
pass
b.py
:
from a import Base # If I do this, `python main.py` fails with "ModuleNotFoundError: No module named 'a'"
from .a import Base # But if I do this, `python b.py` or `python folder/b.py` fails with "ModuleNotFoundError: No module named '__main__.a'; '__main__' is not a package"
class Kid(Base):
pass
if __name__ == "__main__":
# Toy around with Kid (informal test, debug, snippets, etc.)
k = Kid()
main.py
:
from folder.b import Kid
# Main script with Kid.
k = Kid()
Я иногда хочу запустить main.py
, потому что это моя основная программа.
Но я иногда хочу запустить b.py
, потому что это проще ион содержит небольшие фрагменты и примеры для игры с моим классом Kid
, пока файл открыт.
Я думаю, что законно хотеть и то и другое, иначе не будет смысла в общей конструкции if __name__ == '__main__':
.
Каков правильный импорт для b.py
? Есть ли способ, которым я могу наслаждаться лучшим из обоих вариантов?