Сборка исходных пакетов github в среде conda - PullRequest
0 голосов
/ 08 января 2019

У меня есть файл environment.yml для создания моей среды conda, где один пакет (оболочка python для другого) зависит от файлов .h / .so, предоставленных другим. Допустим,

   channels:
     - defaults
     - conda-forge

   dependencies:
     - blah=1.2.1
     - pip:
       - git+https://github.com/pyBlah.git

Пакет blah сам по себе устанавливается правильно, а заголовочные файлы / .so действительно устанавливаются в соответствующем месте (в папках окружения conda include и lib соответственно), но строка pip install завершается ошибкой потому что он не может найти заголовки.

Я мог бы удалить строку pip в environment.yml выше и попробовать установить ее после создания / активации среды, например так:

CFLAGS=-I/path/to/env/include LDFLAGS=-L/path/to/env/lib pip install git+https://github.com/pyBlah.git

или выполните что-то вроде Конда установила LD_LIBRARY_PATH только для env чтобы избежать необходимости явно указывать пути во время pip install, но выполнение любого из этих действий выглядит как предоставление слишком большого количества деталей и разбиение того, что должно было быть одним единственным шагом установки на множество.

Я думаю, что conda должна делать что-то подобное внутри себя, чтобы разрешить / собрать / установить связанные пакеты, которые она все равно находит в environment.yml.

Итак, мои вопросы двоякие:

  1. Существует ли причина, по которой conda не добавляет подходящие пути include / lib автоматически, так как в противном случае pip (который в конечном итоге зависит от среды) будет правильно выполнять свою работу после активации среды?

  2. Есть ли канонический способ выполнить установку зависимых пакетов, просто используя соответствующие спецификаторы в environment.yml?

...