如何聚合 conda 环境?
How to aggregate conda environments?
我正在尝试提供一个已设置的项目及其依赖库。
两者都使用 miniconda 来定义库。
这是一个初始脚本:
#!/bin/bash
project_home_path=`dirname $( cd "$(dirname "[=10=]")" ; 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
- 创建一个环境,其中包含您需要的所有库和包。
conda env export -n MyOneEnvironment -f everything.yml
然后进行配置:
conda env create -n TheNewEnvironment -f everything.yml
conda activate TheNewEnvironment
- 安装任何你需要的不是 conda 包的东西
设置后,每次要在该环境中 运行 程序时都需要重复 conda activate
命令。
在您的第二个脚本示例中,您从 yml 文件创建两个环境,只是 re-export 已安装包的列表,然后将它们安装到基础环境中。所以你一共搞砸了三个环境。
如果要求您必须将东西安装到 conda 基础环境中,那么请收集一个 everything.yml
包含所有需要的文件,然后使用 .
但是,这样污染基地环境可不是什么好主意。如果您需要为项目或程序安装先决条件,那么您应该为此创建一个专用的 conda 环境,而不要管基础环境。然后您可以将任意数量的项目和程序安装到单独的环境中,而不会相互干扰。
我正在尝试提供一个已设置的项目及其依赖库。
两者都使用 miniconda 来定义库。
这是一个初始脚本:
#!/bin/bash
project_home_path=`dirname $( cd "$(dirname "[=10=]")" ; 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
- 创建一个环境,其中包含您需要的所有库和包。
conda env export -n MyOneEnvironment -f everything.yml
然后进行配置:
conda env create -n TheNewEnvironment -f everything.yml
conda activate TheNewEnvironment
- 安装任何你需要的不是 conda 包的东西
设置后,每次要在该环境中 运行 程序时都需要重复 conda activate
命令。
在您的第二个脚本示例中,您从 yml 文件创建两个环境,只是 re-export 已安装包的列表,然后将它们安装到基础环境中。所以你一共搞砸了三个环境。
如果要求您必须将东西安装到 conda 基础环境中,那么请收集一个 everything.yml
包含所有需要的文件,然后使用
但是,这样污染基地环境可不是什么好主意。如果您需要为项目或程序安装先决条件,那么您应该为此创建一个专用的 conda 环境,而不要管基础环境。然后您可以将任意数量的项目和程序安装到单独的环境中,而不会相互干扰。