Импорт модулей, которые импортируют другие модули из других каталогов в Python 3.6 - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть рабочий каталог, который выглядит следующим образом:

project
  src
    data
      +secrets.py
      +data.py
    +format.py

У меня есть переменные в secrets.py, называемые user и pw.

Я импортирую переменные в data.py для подключения к базе данных следующим образом:

from secrets import user, pw

Это работает, но теперь я хочу иметь возможность запустить это изнутри format.py:

from data.data import <function_name>

Я получаюImport Error: cannot import name 'user' from 'secrets'

Поскольку format.py не находится в том же каталоге, что и data.py, импорт прерывается, поскольку не может найти secrets.py.Если бы я обновил data.py этим:

from data.secrets import user, pw

, я мог бы успешно запустить format.py.Но тогда это сломалось бы data.py!

Мне кажется, что я просто полностью структурировал свой проект неправильно с прыжка.Есть ли лучший способ сделать это или способ исправить ошибки импорта?

Я пытался использовать относительный импорт с .. и явно использовать src.data.secrets, но это все равно сломается data.py

Ответы [ 2 ]

0 голосов
/ 21 сентября 2019

Это должно работать.

from importlib import import_module

format = import_module("../format.py")

Возможно, вам придется использовать и, вероятно, следует в соответствии с документами.

from importlib import import_module

format = exec_module(create_module(find_spec("../format.py)))
0 голосов
/ 20 сентября 2019

Попробуйте from .secrets import user, pw.Я пытался, это работает.Точка означает, что вы импортируете модуль из текущего каталога

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...