Ответ 1
AFAIK, нет стандартного стандартного способа установки зависимостей с вашим пакетом. Континуум сделана конда именно для этой цели. Ребята из numpy написали свой собственный подмодуль distutils в своем пакете, чтобы установить некоторые сложные зависимости, а теперь по крайней мере некоторые из они выступают за конду как решение. К сожалению, вам может потребоваться сделать пакеты conda для некоторых из этих зависимостей самостоятельно.
Если вы в порядке, без переносимости, то, очевидно, будет работать таргетинг на диспетчер пакетов целевых компьютеров. В противном случае, для портативного менеджера пакетов, conda - единственный вариант, о котором я знаю.
Альтернативно, с вашего поста ( "компиляция на лету не является вариантом" ), похоже, что переносимость может не быть проблемой для вас, и в этом случае вы также можете установить все требования к префиксный каталог (большинство инсталляторов, с которыми я столкнулся, поддерживают опцию configure --prefix=/some/dir/
). Если у вас есть гарантированная единая архитектура, вы можете, вероятно, префикс-установить все свои зависимости в один каталог и передать это как файл. Конда подход, вероятно, будет более чистым, но я использовал префиксные установки совсем немного, и они, как правило, являются одним из самых простых решений для перехода.
Изменить: Что касается conda, то это одновременно пакет-менеджер и "virtualenv" -подобная среда /python install. Хотя virtualenv добавляется поверх существующей установки python, conda берет на себя всю установку, поэтому вы можете быть более уверены в том, что учитываются все зависимости. По сравнению с pip, он предназначен для добавления обобщенных зависимостей, отличных от Python, вместо простого компиляции исключений C/Cpp. Для получения дополнительной информации я бы увидел:
- pip vs conda (также рекомендует buildout как возможность)
- conda как установка python
Что касается использования conda для вашей цели, документы объясняют, как создать рецепт:
Конструкция сборки Conda
Построение пакета требует рецепта. Рецепт - это плоский каталог, который содержит следующие файлы:
meta.yaml
(файл метаданных)build.sh
(Unix build script, который выполняется с помощью bash)bld.bat
(Windows build script, который выполняется с помощью cmd)run_test.py
(необязательный тестовый файл Python)- патчи к источнику (необязательно, см. ниже)
- другие ресурсы, которые не включены в источник и не могут быть созданный скриптами сборки.
Тот же рецепт должен использоваться для сборки пакета на всех платформах.
При создании пакета выполняются следующие шаги:
- прочитать метаданные
- загрузить исходный код (в кеш)
- извлечь исходный код в исходный каталог
- применить патчи
- создать среду сборки (здесь устанавливаются зависимости сборки)
- запустите фактическую сборку script. Текущий рабочий каталог является источником каталог с установленными переменными среды. Конструкция script устанавливается в среда сборки
- выполните следующие шаги последующей обработки: shebang, rpath и т.д.
- добавить метаданные conda в среду сборки
- упаковать новые файлы в среду сборки в пакет conda
- проверить новый пакет conda:
- создать тестовую среду с пакетом (и его зависимостями)
- запустить тестовые скрипты
Есть примеры рецептов для многих пакетов conda в
conda-recipes <https://github.com/continuumio/conda-recipes>
_ repo.Команда: ref:
conda skeleton <skeleton_ref>
может помочь сделать рецепты скелета для обычных репозитории, такие какPyPI <https://pypi.python.org/pypi>
_.
Затем, в качестве клиента, вы установите пакет похожий на то, как вы будете устанавливать из pip
Наконец, docker также может быть вам интересен, хотя я не видел его много используемого для Python.