Импортировать скрипт на том же уровне, но и с верхнего уровня - PullRequest
1 голос
/ 05 апреля 2019

У меня следующая структура папок:

top folder

 - final_program.py
 - scripts
   - __init__.py
   - extract.py
   - estimations.py
   - calculate_all.py

final_program.py запускает функцию в calc_all.py. Итак, у меня есть это:

from scripts.calculate_all import get_info

Тем не менее, сценарий Calculate_all.py использует как сценарии extract.py, так и оценку. Итак, в Calculate_all.py у меня есть это:

import scripts.estimations
import scripts.extract

При непосредственном запуске final_program.py я не сталкиваюсь с ошибками. Отлично. Тем не менее, я хотел бы также иметь возможность запустить Calculate_py.py напрямую. Когда я пытаюсь, я получаю эту ошибку:

ModuleNotFoundError: Нет модуля с именем «scripts.estimas»

Как мне решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 05 апреля 2019

Вот что сработало для меня:

  • Добавлено __init__.py на верхнем уровне
  • В Calculate_all:
from . import estimations
from . import extract
  • В final_program:
import scripts.calculate_all
import scripts.extract

Запустите файлы python, используя флаг -m (запустите модуль как скрипт).

Для final_program: python -m final_program
Длярассчитать_все: python -m scripts.calculate_all

0 голосов
/ 05 апреля 2019

используется в calculate_all.py

import .estimations
import .extract
...