Что такое снимок Maven и зачем он нам нужен?

Вариант 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, а затем либо:

  1. Проехали местоположение data через файл конфигурации, аргументы командной строки или
  2. Вставьте местоположение в свой код Python.

Это гораздо менее желательно, если вы планируете распространять свой проект. Если вы действительно хотите это сделать, вы можете установить 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']}
746
задан Joachim Sauer 18 December 2013 в 10:19
поделиться

1 ответ

Снимок является специальной версией, которая указывает на текущую копию разработки проекта, который работается на. Для каждой сборки знаток всегда проверяет для СНИМКА проекта.

Каждый раз, когда знаток находит более новый СНИМОК проекта, он загружает и заменяет более старый .jar файл проекта в локальном репозитории.

версия Снимка всегда получает некоторые обновления/изменения, сделанные на проекте. Кроме того, Снимок должен существовать только во время этапа разработки, и он не будет иметь версии выпуска. Это подразумевает, что сборка проекта будет изменена в любое время, и это все еще является объектом процесса разработки.

, Когда Вы создадите приложение, Знаток будет искать зависимости в локальном репозитории. Если стабильная версия не будет найдена там, то она будет искать удаленные репозитории (определенный в pom.xml) для получения этой зависимости. Затем это скопирует его в локальный репозиторий, для предоставления доступа к нему доступным для следующих сборок.

1
ответ дан 22 November 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: