У меня есть проект со следующей структурой:
Root/
|-- project/
| |-- test/
| | |-- __init__.py
| | |-- test_main.py
| |
| |-- __init__.py
| |
| |-- scripts/
| | |-- __init__.py
| | |-- some_script.py
| |
| |-- settings/
| | |-- __init__.py
| | |-- load_settings.py
| | |-- MAPS.py
| | |-- TRSFM.py
|
|-- setup.py
|-- README
внутри моей папки настроек, у меня есть пара файлов py, которые содержат файлы, в которых я храню данные -> load_settings.py используется для их получения.
Моя проблема в том, что когда я пытаюсь импортировать более одного из них в load_settings.py, load_settings.py превращается из функции в модуль, который, кажется, не имеет никаких функций при проверке
__ init __. Py (в папке настроек)
from .load_settings import load_settings
Когда загрузка settings.py определяется следующим образом:
load_settings.py
from .settings import MAPS
def load_settings(setting):
return MAPS[setting]
и some_script.py со следующим кодом:
some_script.py
from project.settings import load_settings
help(load_settings)
, и следующая командазапустите:
python -m project.scripts.some_script
Я получу следующий вывод:
Help on function load_settings in module project.settings.load_settings:
load_settings(setting)
но, если я изменю load_settings.py, чтобы включить дополнительный импорт:
load_settings.py
from .settings import MAPS
from .settings import TRSFM
def load_settings(setting):
return MAPS[setting]
def load_transforms(trsfm):
return TRSFM[trsfm]
и запустить тот же command, как указано выше, я получаю следующий вывод:
Help on module project.settings.load_settings in nec.settings:
NAME
project.settings.load_settings
DATA
MAPS = {'A': {'a': 'b', 'c': 'd ...
FILE
/home/user/ws/Root/project/settings/load_settings.py
сначала я подумал, что проблема связана с функцией и файлом (load_settings), имеющими одно и то же имя, но изменение их не имеет значения.Я не могу понять, почему это произошло, так как я хочу иметь возможность импортировать и вызывать функции в some_script.py, например:
from project.settings import load_settings
a_dict = load_settings('A')
, который работает до добавления второго импорта для загрузки настроек, но когдавторой импорт присутствует, он дает мне следующую ошибку:
TypeError: 'module' object is not callable
, что ясно, поскольку объект, который я пытаюсь вызвать, больше не является функцией и пытается получить доступ к любым функциям внутри модуля, например
from project.settings import load_settings as ls
a_dict = ls.load_settings('A')
возвращает следующую ошибку:
AttributeError: module 'project.settings.load_settings' has no attribute 'load_settings'
, которая снова становится понятной с помощью функции справки - поскольку внутри модуля не видно никаких функций.
ЛюбаяПомощь будет оценена.