Как запустить с from inport python

Делаю мини программку. И решил разделить по нескольким файлам разные функции. введите сюда описание изображения

Делаю уже импорт с файлом plus.py И в итоге если вставляю сверху from programs.calculator.functions.plus import* то ничего не работает. введите сюда описание изображения Но при том что prints.py и tutor.py работают Если вставляю уже тут где он находится то далее number plus_one и plus_two введите сюда описание изображения

Но при том что можно ввести числа и происходит так введите сюда описание изображения

Если убрать строку с from programs.calculator.functions.plus import* То далее программа идёт

Как мне сделать так чтобы смог и импортнуть и запустить те функции с файла plus.py которые мне нужны Вот он сам введите сюда описание изображения

Просто сейчас для себя разбираю о том чтобы активировать функции из разных файлов в одном когда это нужно будет. Но застрял именно на этом. Сможете помочь?


Ответы (1 шт):

Автор решения: Daniil Loban

То что вы решили разбить код на файлы - вполне нормальная практика. Но разложить по папкам файлы в питоне - мало, он ведь должен точно знать что именно импортировать. В данном случае, он просто не смог найти файл, указывающий что в такой-то папке находится пакет, который вы будете импортировать. Чтобы такого не было - надо явно помечать, что хотите чтобы папка считалась пакетом. Для этого достаточно в дирректорию положить пустой файл __init__.py

Файлы с именем __init__.py используются для маркировки каталогов на диске в виде каталогов пакетов Python.

.
├── programs
│   ├── __init__.py
│   └── calculator
│       ├── __init__.py
│       └── functions
│           ├── __init__.py
│           └── plus.py
└── test.py

в модуле plus.py к примеру:

def plus(a, b):
  return a + b

в файле test.py:

from programs.calculator.functions.plus import *

print(plus(1 , 2))

в консоли выведет 3

Более подробно можно почитать на хекслете к примеру:

→ Ссылка