Вариант 1: Установить как данные пакета
. Основное преимущество размещения файлов данных внутри корня вашего пакета Python заключается в том, что он позволяет вам не беспокоиться о том, где файлы будут жить в системе пользователя, что могут быть Windows, Mac, Linux, некоторые мобильные платформы или внутри Яйца. Вы всегда можете найти каталог data
относительно вашего корня пакета Python, независимо от того, где и как он установлен.
Например, если у меня есть макет проекта, например:
project/
foo/
__init__.py
data/
resource1/
foo.txt
Вы можете добавить функцию к __init__.py
, чтобы найти абсолютный путь к файлу данных:
import os
_ROOT = os.path.abspath(os.path.dirname(__file__))
def get_data(path):
return os.path.join(_ROOT, 'data', path)
print get_data('resource1/foo.txt')
Выходы:
/Users/pat/project/foo/data/resource1/foo.txt
После того, как проект установлен в качестве Яйца путь к data
изменится, но код не нужно изменять:
/Users/pat/virtenv/foo/lib/python2.6/site-packages/foo-0.0.0-py2.6.egg/foo/data/resource1/foo.txt
Вариант 2: установить в фиксированное местоположение
альтернативой было бы размещение ваших данных вне пакета Python, а затем либо:
data
через файл конфигурации, аргументы командной строки или Это гораздо менее желательно, если вы планируете распространять свой проект. Если вы действительно хотите это сделать, вы можете установить data
везде, где захотите, в целевой системе, указав место назначения для каждой группы файлов, перейдя в список кортежей:
from setuptools import setup
setup(
...
data_files=[
('/var/data1', ['data/foo.txt']),
('/var/data2', ['data/bar.txt'])
]
)
Обновлено: Пример функции оболочки для рекурсивно grep файлов Python:
atlas% function grep_py { find . -name '*.py' -exec grep -Hn $* {} \; }
atlas% grep_py ": \["
./setup.py:9: package_data={'foo': ['data/resource1/foo.txt']}
Снимок является специальной версией, которая указывает на текущую копию разработки проекта, который работается на. Для каждой сборки знаток всегда проверяет для СНИМКА проекта.
Каждый раз, когда знаток находит более новый СНИМОК проекта, он загружает и заменяет более старый .jar файл проекта в локальном репозитории.
версия Снимка всегда получает некоторые обновления/изменения, сделанные на проекте. Кроме того, Снимок должен существовать только во время этапа разработки, и он не будет иметь версии выпуска. Это подразумевает, что сборка проекта будет изменена в любое время, и это все еще является объектом процесса разработки.
, Когда Вы создадите приложение, Знаток будет искать зависимости в локальном репозитории. Если стабильная версия не будет найдена там, то она будет искать удаленные репозитории (определенный в pom.xml) для получения этой зависимости. Затем это скопирует его в локальный репозиторий, для предоставления доступа к нему доступным для следующих сборок.