Стандартное расположение ресурсов без кода для пакетов Python

StackOverflow https://stackoverflow.com/questions/849334

Вопрос

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

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

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

Какие-либо предложения?

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

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

Решение

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

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

Мы помещаем файлы, отличные от .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.

А стандартный location — это место, где находятся ваши стандартные библиотеки.Но из того, что вы написали, мне не кажется, что вам понадобится ваша библиотека Python.Я думаю, тебе стоит попробовать виртуаленв.

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

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

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

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

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