Вопрос

У меня есть модуль Python, который генерирует большие файлы данных, которые я хочу кэшировать на диске для будущего использования.Для обычного пользователя размер кэша, скорее всего, составит несколько сотен МБ, но это сэкономит много времени вычислений.

Файлы не распространяются вместе с модулем, но генерируются при первом запуске кода с заданным набором параметров.

До сих пор я просто использовал один файловый модуль и помещал его в жестко закодированный путь относительно модуля (data/).Но теперь мне нужно распространить этот модуль в пакете Python с помощью distutils, и мне интересно, существует ли стандартный способ сделать это.

Я думал о чем-то вроде скомпилированного кеша scipy.weave, но мне было интересно, есть ли более современный поддерживаемый способ сделать это.На платформах *nix я ожидаю, что он войдет ~/.something но я не уверен, каким будет эквивалент Windows.Также это должно быть настроено так, чтобы пользователи могли указать его куда-нибудь еще, если это более удобно, или разделить каталог кэша между пользователями.Как должен работать такой файл конфигурации?Куда это должно идти?

Или мне следует просто использовать его в качестве варианта установки либо через файл конфигурации рядом с setup.py, либо вручную отредактировав setup.py, а затем жестко запрограммировать каталог в модуле перед установкой?

Любые указатели с благодарностью принимаются...

Это было полезно?

Решение

Вы можете использовать стандартный библиотечный модуль КонфигПарсер для анализа ini-файла (или файла .rc в зависимости от вашей культуры).Чтобы найти файл, os.path.expanduser — это полезная функция, которая правильно работает на всех платформах для таких путей, как «~/.mytoolrc».Чтобы позволить пользователю переопределять расположение вещей, вы можете использовать переменные среды через os.environ.

Другие советы

В мире свободных ОС появляется новый стандарт: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

Этот модуль может помочь вам для Windows и Max OS X, но, похоже, он не работает в соответствии со спецификацией базового каталога XDG: http://pypi.python.org/pypi/appdirs

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top