я иметь следующую структуру каталогов для программы, которую я пишу в Python:Как создать файл конфигурации python, в котором определены относительные пути, но когда скрипты в других каталогах импортируют config, пути верны?
\code\
main.py
config.py
\module_folder1\
script1.1.py
\data\
data_file1
data_file2
Мой config.py
представляет собой набор глобальных переменных, которые задаются пользователем, или вообще фиксированной все время. В частности, config.py
определяет переменные пути для двух файлов данных, например path1 = os.path.abspath("../data/data_file1")
. Основное назначение - запустить main.py
, который импортирует config
(и другие модули, которые я написал), и все хорошо.
Но иногда мне нужно запустить script1.1.py
сам по себе. Без проблем. Я могу добавить к script1.1
обычный if __name__ == '__main__':
и я могу импортировать config
. Но тогда я получаю path1 = "../code/data/data_file1"
, которого не существует. Я думал, что, поскольку путь создан в config.py
, путь будет относиться к тому, где живет config.py
, но это не так.
Итак, вопрос в том, как я могу получить центральный файл конфигурации, который определяет относительные пути, поэтому я могу импортировать файл конфигурации в сценарии в разных каталогах и иметь пути по-прежнему правильными?
Следует упомянуть, что код repo будет использоваться совместно несколькими машинами, поэтому жестко кодирование абсолютного пути не является вариантом.
Там был комментарий я ответил, но теперь, кажется, исчез. Было предложено использовать 'os.path.dirname (__ file __)' в файле конфигурации (я думаю), это правильно? Это похоже на то решение, которое я ожидал. – travelingbones