Сконфигурируйте сборку conda, чтобы исключить некоторые папки из вывода пакета conda - PullRequest
7 голосов
/ 08 марта 2019

tl; dr:

Как исключить папки из пакета conda build?

Context

Я создаю свои первые пакеты с conda build.

Мой файл meta.yaml выглядит следующим образом:

package:
    name: 'some_name'
    version: {{ load_setup_py_data().get('version') }}

source:
    path: ./

build:
    script: python setup.py install --single-version-externally-managed --record=record.txt

requirements:
    run:
        - python >=3.6
        - pandas >=0.2
        - numpy >=1.12
        # Packages that must be installed
        # in the user's conda environment
        # to run this package.

    build:
        # Packages used by setup.py
        # to install this package.
        # May also install compilers
        # for non-python code.
        - python
        - setuptools

А мой корневой каталог (где находятся файлы setup.py & meta.yaml) выглядит следующим образом:

$ ls
README.md   __pycache__      input       isi_classif meta.yaml   
notebooks   output      scripts     setup.py    version.py

Некоторые папки есть только потому, что они были полезны во время создания прототипа, но я не хочу удалять их из репозитория.

Как исключить папку (например, input илиnotebooks здесь) и его содержимое из пакета, который собирает conda?

Для информации, я собираю следующую команду:

$ conda build some_folder_name

1 Ответ

0 голосов
/ 18 июля 2019

Я ищу ответ, и все, что я нашел, уже было в комментарии к вопросу. Поскольку эти решения работают (не так, как задумано, но все еще работают), я объясню это здесь. Я пробую второе решение на тестовом проекте, и оно работает. Я до сих пор не привык к Конде.

Первый: явный вывод

Явные списки файлов:

Явные списки файлов - это относительные пути от корня префикса сборки. Явные списки файлов поддерживают глобальные выражения. Также поддерживаются имена каталогов, и они рекурсивно включают содержимое.

outputs:
  - name: subpackage-name
    files:
      - a-file
      - a-folder
      - *.some-extension
      - somefolder/*.some-extension

Скрипты, которые перемещают файлы в префикс сборки:

Скрипты, которые создают или перемещают файлы в префикс сборки, могут быть скриптами любого типа. Известные типы сценариев должны указывать только имя сценария. В настоящее время список распознанных расширений: py, bat, ps1 и sh.

outputs:
  - name: subpackage-name
    script: move-files.py

Указание файлов для включения в вывод

Второе: игнорировать файлы префиксов

Чтобы указать отдельные имена файлов, используйте:

build:   ignore_prefix_files:
- file1

Игнорировать файлы префиксов

Я не пробовал ответить Майклу Сарахану, но он должен работать, если все сделано правильно.

«Вам нужно изменить свой build.sh/bld.bat, чтобы удалить файлы из $ PREFIX до окончания этих сценариев.»

...