指定从yml文件创建conda后要运行的命令

时间:2019-12-01 19:47:44

标签: anaconda conda

我有一个environment.yml文件,我曾使用以下文件来创建Python环境:

conda env create --file environment.yml

创建环境后,我需要执行一些操作(例如,在jupiter-lab中注册内核):

ipython kernel install --name=to_the_edge

我想嵌入一个或多个shell命令来运行“安装后”,以便安装程序独立包含在.yml文件中。有没有办法做到这一点?还是conda内有另一种方式来接近我所追求的目标?

我还希望指定一种在conda activate之后运行的shell命令,但这是次要的希望。

也许这不可能,因为conda可以跨平台工作吗?

1 个答案:

答案 0 :(得分:1)

使用标准的Conda命令实际上是不可能的,但是有一些选项可以获取这种功能。

Jupyter和Conda

Jupyter和Conda的最佳实践是拥有一个安装了jupyter且也有nb_conda_kernels的环境。您总是从此环境启动jupyter notebooknb_conda_kernels软件包使Jupyter能够自动检测具有ipykernel(或其他等效语言,例如r-irkernel)的任何其他env。因此,您不需要任何其他注册,而只需在YAML中包括ipykernel。参见the docs for nb_conda_kernels

在安装时运行脚本

这不能通过YAML完成。但是,您可以构建自己的自定义软件包,在安装时执行此操作,然后将其包含在YAML中。您必须提供.sh.bat等来运行命令。参见the documentation on adding pre-link, post-link, and unlinked scripts to a package recipe

通过此路由,您还可以add activate and deactivate scripts分别在激活和停用env时运行。您也可以手动添加此类脚本,即无需自定义程序包。例如,the docs show how to define environment variables在激活时,但是您可以运行任意脚本。