我有一个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可以跨平台工作吗?
答案 0 :(得分:1)
使用标准的Conda命令实际上是不可能的,但是有一些选项可以获取这种功能。
Jupyter和Conda的最佳实践是拥有一个安装了jupyter
且也有nb_conda_kernels
的环境。您总是从此环境启动jupyter notebook
。 nb_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在激活时,但是您可以运行任意脚本。