用 conda 进行依赖管理

最后更新于

OpenBayes 中的 python 是通过 conda 进行管理的,默认的安装环境路径可以通过以下命令获取:

$ conda env list

# conda environments:
#
base                  *  /usr/local

可以看到默认的环境在 /usr/local 中,每个环境中的依赖可以通过 conda list 获取,在文档左侧「运行时环境」下也提供了完整的安装依赖列表。

使用 conda 创建新的环境

OpenBayes 运行时环境默认不支持环境的保存,即当执行通过「继续执行」的方式再次运行的时候只会保留默认的依赖,额外的自定义安装依赖都会丢失。但是通过 conda 自定义环境可以解决这个问题。这里给出一个样例保存 mmdetection 环境。

1. 在 /openbayes/home 下创建一个新的环境

conda create -p open-mmlab python=3.7 -y

安装完成后通过 conda activate /output/open-mmlab 激活新的环境。

注意 能够保存环境的关键在于将新的环境的保存路径存放在 /openbayes/home 下,通过「继续执行」可以将这部分内容再次绑定到一个新的执行之中。

2. 按照文档安装其他依赖

# 注意这里依据相应的运行时 cuda 版本对其原有的指令做了更改
conda install pytorch torchvision cudatoolkit=10.0 -c pytorch

git clone https://github.com/open-mmlab/mmdetection.git
cd mmdetection

# 这一步骤如果没有添加会报错,虽然官方文档没有提及
pip install pytest-runner

# 按照官方文档继续安装
pip install -r requirements/build.txt
pip install "git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI"
pip install -v -e .  # or "python setup.py develop"

完成安装后,mmdetection 相关的依赖被安装到了 /openbayes/home/open-mmlab(也就是 /output/open-mmlab 下。

3. 通过继续执行打开原有的执行

通过「继续执行」的方式将上一次准备的 mmdetection 的环境绑定到新的执行里运行,通过命令 conda activate /output/open-mmlab/ 可以再次激活上一次配置好的环境继续使用了。

将新创建的 conda 与 jupyter 集成

Jupyter 可以与 conda 集成以允许同一个 notebook 指定不同的 conda 环境。按照以下步骤可以将一个自定义的 conda 环境添加到 Jupyter 中。

conda activate /output/open-mmlab/
(/output/open-mmlab/)$ conda install ipykernel
(/output/open-mmlab/)$ ipython kernel install --user --name=open-mmlab

然后刷新 Jupyter 页面可以看到有了额外的一个选项: