У меня есть код, который читает файл конфигурации в файле __init__.py
внутри определенного модуля.Допустим, у меня есть такая структура:
dir/
setup.py
src/
__init__.py
properties/
config.yaml
module/
__init__.py ---> this file reads src/properties/config.yaml
Код для чтения выглядит примерно так:
with open(os.path.join(_ROOT, os.path.normpath('src/properties/config.yaml'))) as f:
config = yaml.load(f)
Где _ROOT
определяется в верхней части src/__init__.py
следующим образом:
ROOT = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
В основном, _ROOT=dir
.
Это работает как заклинание на каждой платформе, за исключением случаев, когда src
используется в качестве zip-пакета, для которого чтение возвращает FileNotFoundError: ... No such file or directory: ... package.zip\\src\\properties\\config.yaml
.
Есть ли способ решения этой проблемы, нужно ли разбираться с ситуацией, когда пакет упакован в архив, следует ли избегать загрузки файла внутри кода пакета ...?
Я пыталсяобширный поиск в Google для этого, но я ничего не нашел.
Заранее спасибо.