Я пытаюсь подготовить уже установленный проект и его зависимую библиотеку.
Оба используют miniconda для определения библиотек.
Вот начальный скрипт:
#!/bin/bash
project_home_path=`dirname $( cd "$(dirname "$0")" ; pwd -P )`
source /home/${USER}/miniconda/etc/profile.d/conda.sh
conda env create -f ${project_home_path}/environment.yml > /dev/null 2>&1
conda activate <env-name>
/home/${USER}/miniconda/bin/app.py & echo $! > /tmp/env-name.pid
Это не сработало, потому что строка conda activate <env-name>
не активировалась и не сделала доступными необходимые библиотеки.
После просмотра документации [1] этот скрипт был усовершенствован.
#!/bin/bash
project_home_path=/home/${USER}/folder
source /home/${USER}/miniconda/etc/profile.d/conda.sh
conda env create --force -f ${project_home_path}/project/environment.yml > /dev/null 2>&1
conda env create --force -f ${project_home_path}/library/environment.yml > /dev/null 2>&1
conda env export -n <project-env> > /tmp/env.yml
conda env update -n base -f /tmp/env.yml > /dev/null 2>&1
conda env export -n <library-env> > /tmp/env.yml
conda env update -n base -f /tmp/env.yml > /dev/null 2>&1
cd /home/${USER}/folder/library && python setup.py install
cd /home/${USER}/folder/project && python setup.py install
Это выполняет агрегацию, необходимую для производства и работ, но мне интересно, как это может быть лучше.
[1] https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html