Стандартное расположение некодового ресурса для пакетов Python - PullRequest
4 голосов
/ 11 мая 2009

Это должен быть распространенный сценарий, но пока не найдено ни одного соответствующего сообщения.

Я планирую развернуть библиотеку Python (думаю, то же самое относится и к обычным приложениям), которая использует некоторые изображения и другие файлы ресурсов. Каково стандартное расположение для таких предметов? Я предполагаю, что для проекта Foo выбор будет

  • Имейте каталог resources в исходном хранилище и затем перемещайте файлы в /usr/share/foo/
  • Поместите ресурсы непосредственно в пакет python, который входит в /usr/lib/python-<version>/foo/

Есть предложения?

Редактировать: Как и предполагалось, поясняется, что основной платформой, на которой он будет работать, является Linux.

Ответы [ 3 ]

2 голосов
/ 12 мая 2009

Мы помещаем не .py файлы в /opt/foo/foo-1.2/...

За исключением, конечно, статических носителей, которые обслуживаются Apache, они идут в /var/www/html/foo/foo-1.1/media/...

За исключением, конечно, пользовательских конфигурационных файлов. Они идут в /var/opt/customer/foo/...

Они следуют стандартам Linux, насколько я их понимаю.

Мы стараемся держаться подальше от /usr/lib/ и /lib видов локаций, потому что те чувствуют, что они являются частью дистрибуции. Мы склоняемся к /opt и /var, потому что они четко отделены от каталогов дистрибутивов Linux.

2 голосов
/ 11 мая 2009

Этот вопрос несколько неполон, потому что правильный ответ будет зависеть от базовой операционной системы, поскольку у каждой из них есть свои собственные способы работы. В Linux (и большинстве ОС на основе Unix), например, стандартным будет / usr / share / foo или / usr / local / share / foo. В OS X вы можете сделать то же самое, но я бы подумал, что «/ Library / Application Support / Foo» (хотя это обычно для хранения настроек и тому подобного) будет местом для размещения таких вещей, хотя, если вы пишете библиотеки, следуя Идея "фреймворка", все ресурсы будут включены в /Library/Frameworks/Foo.Framework "... С другой стороны, приложения на OS X должны хранить все эти ресурсы в каталоге Resources внутри Foo.app

0 голосов
/ 11 мая 2009

Местоположение standard - это место, куда отправляются ваши стандартные библиотеки. Но из того, что вы написали, для меня не звучит, что вам понадобится ваш python lib. Я думаю, вы должны попробовать Virtualenv .

Если вы не хотите проходить через все неприятности (ну, для вас это действительно просто sudo easy_install virtualenv), вы можете просто сбросить вашу библиотеку Python в любой каталог в ~/ и сделать что-то по линии

import sys
sys.path.append( '/full/path/to/your/lib/goes/here')

к любому приложению, которое использует вашу библиотеку.

Имейте в виду, что приведенные примеры приведены только для целей тестирования. Для всего живого я бы порекомендовал использовать distutil . Примеры использования приведены здесь .

...