备份和恢复 Conda 环境是一个常见的需求,特别是在进行系统迁移、版本更新或共享环境配置时。以下是详细的步骤来备份和恢复 Conda 环境:
备份 Conda 环境
要备份 Conda 环境,可以使用 conda list
命令导出环境中所有包的列表,然后将其保存到一个文件中。这个文件可以用于在另一台机器或同一台机器上的不同位置重建环境。
-
导出环境文件:
打开终端,激活你想要备份的环境,然后使用以下命令导出环境到一个 YAML 文件:conda activate your_env_name conda env export > environment.yml
这会创建一个名为
environment.yml
的文件,其中包含了环境中所有包的精确版本,以及需要的通道信息。 -
保存这个文件:
将这个environment.yml
文件保存在安全的地方或者传送到其他设备。
恢复 Conda 环境
要在新的系统或位置恢复环境,你需要使用之前导出的 YAML 文件。
- 自定义修改environment.yml中的部分内容(可选):
首先解释一下,environment.yml中的各个部分
举例environment.yml:name: fastinst channels: - pytorch - conda-forge - defaults dependencies: - _libgcc_mutex=0.1=conda_forge - _openmp_mutex=4.5=2_gnu - blas=1.0=mkl - bzip2=1.0.8=hd590300_5 - ca-certificates=2024.2.2=hbcca054_0 - cudatoolkit=11.3.1=hb98b00a_13 - ffmpeg=4.3=hf484d3e_0 - freetype=2.10.4=h0708190_1 - giflib=5.2.1=h0b41bf4_3 - gmp=6.3.0=h59595ed_0 - gnutls=3.6.13=h85f3911_1 - icu=73.2=h59595ed_0 - intel-openmp=2023.1.0=hdb19cb5_46306 - jpeg=9b=h024ee3a_2 - lame=3.100=h166bdaf_1003 - lcms2=2.12=h3be6417_0 - ld_impl_linux-64=2.38=h1181459_1 - libblas=3.9.0=1_h86c2bf4_netlib - libcblas=3.9.0=5_h92ddd45_netlib - libffi=3.4.4=h6a678d5_0 - libgcc-ng=13.2.0=h807b86a_5 - libgfortran-ng=13.2.0=h69a702a_5 - libgfortran5=13.2.0=ha4646dd_5 - libgomp=13.2.0=h807b86a_5 - libhwloc=2.9.1=hd6dc26d_0 - libiconv=1.17=hd590300_2 - liblapack=3.9.0=5_h92ddd45_netlib - libpng=1.6.37=h21135ba_2 - libstdcxx-ng=13.2.0=h7e041cc_5 - libtiff=4.2.0=h85742a9_0 - libuv=1.47.0=hd590300_0 - libwebp=1.2.0=h89dd481_0 - libwebp-base=1.2.0=h7f98852_2 - libxml2=2.10.4=hf1b16e4_1 - lz4-c=1.9.3=h9c3ff4c_1 - mkl=2023.1.0=h213fc3f_46344 - ncurses=6.4=h6a678d5_0 - nettle=3.6=he412f7d_0 - ninja=1.11.1=h924138e_0 - openh264=2.1.1=h780b84a_0 - openssl=3.2.1=hd590300_0 - pillow=9.3.0=py38hace64e9_1 - pip=23.3.1=py38h06a4308_0 - python=3.8.18=h955ad1f_0 - python_abi=3.8=2_cp38 - pytorch=1.10.0=py3.8_cuda11.3_cudnn8.2.0_0 - pytorch-mutex=1.0=cuda - readline=8.2=h5eee18b_0 - sqlite=3.41.2=h5eee18b_0 - tbb=2021.9.0=hf52228f_0 - tk=8.6.12=h1ccaba5_0 - torchaudio=0.10.0=py38_cu113 - torchvision=0.11.0=py38_cu113 - typing_extensions=4.10.0=pyha770c72_0 - wheel=0.41.2=py38h06a4308_0 - xz=5.4.6=h5eee18b_0 - zlib=1.2.13=h5eee18b_0 - zstd=1.4.9=ha95c52a_0 - pip: - absl-py==2.1.0 - antlr4-python3-runtime==4.9.3 - appdirs==1.4.4 - black==21.4b2 - cachetools==5.3.3 - certifi==2024.2.2 - charset-normalizer==3.3.2 - cityscapesscripts==2.2.2 - click==8.1.7 - cloudpickle==3.0.0 - coloredlogs==15.0.1 - contourpy==1.1.1 - cycler==0.12.1 - cython==3.0.8 - filelock==3.13.1 - fonttools==4.49.0 - fsspec==2024.2.0 - future==1.0.0 - fvcore==0.1.5.post20221221 - google-auth==2.28.1 - google-auth-oauthlib==1.0.0 - grpcio==1.62.0 - h5py==3.10.0 - huggingface-hub==0.21.3 - humanfriendly==10.0 - hydra-core==1.3.2 - idna==3.6 - imageio==2.34.0 - importlib-metadata==7.0.1 - importlib-resources==6.1.2 - iopath==0.1.9 - kiwisolver==1.4.5 - lazy-loader==0.3 - markdown==3.5.2 - markupsafe==2.1.5 - matplotlib==3.7.5 - mypy-extensions==1.0.0 - networkx==3.1 - numpy==1.24.0 - oauthlib==3.2.2 - omegaconf==2.3.0 - opencv-python==4.9.0.80 - opencv-python-headless==4.9.0.80 - packaging==23.2 - panopticapi==0.1 - pathspec==0.12.1 - platformdirs==4.2.0 - portalocker==2.8.2 - protobuf==4.25.3 - pyasn1==0.5.1 - pyasn1-modules==0.3.0 - pycocotools==2.0.7 - pydot==2.0.0 - pyparsing==3.1.1 - pyquaternion==0.9.9 - python-dateutil==2.9.0.post0 - pywavelets==1.4.1 - pyyaml==6.0.1 - regex==2023.12.25 - requests==2.31.0 - requests-oauthlib==1.3.1 - rsa==4.9 - safetensors==0.4.2 - scikit-image==0.21.0 - scipy==1.10.1 - setuptools==59.5.0 - shapely==2.0.3 - six==1.16.0 - submitit==1.5.1 - tabulate==0.9.0 - tensorboard==2.14.0 - tensorboard-data-server==0.7.2 - termcolor==2.4.0 - tifffile==2023.7.10 - timm==0.9.16 - toml==0.10.2 - tomli==2.0.1 - tqdm==4.66.2 - typing==3.7.4.3 - urllib3==2.2.1 - werkzeug==3.0.1 - yacs==0.1.8 - zipp==3.17.0 prefix: /home/my_conda_envs/fastinst
其中,
name
字段指定了虚拟环境的名称,这里使用这个yaml配置文件创建的虚拟环境的名称为 fastinst
channels
:channels 列表指定了 Conda 在寻找包时应该访问的频道。频道是托管包的服务器。
pytorch:指定使用 PyTorch 官方的 Conda 频道。
conda-forge:一个由社区维护的 Conda 频道,提供大量 Conda 包。
defaults:Anaconda 提供的默认频道,包含大多数常用的包。
dependencies
列表包括该环境需要的所有 Conda 和 pip 包及其版本号。
pip
下的列表表示需要通过 pip 安装的 Python 包,而不是 Conda。
prefix
指定了环境应该被创建在什么路径下。这是一个绝对路径,直接指向环境的存储位置。
示例:prefix: /home/my_conda_envs/fastinst 指出这个环境将被创建在 /home/my_conda_envs/fastinst 这个目录下。
-
创建新环境:
在目标机器上,使用conda env create
命令并指定环境文件来创建环境:conda env create -f environment.yml
这条命令会根据 YAML 文件中定义的包和版本,创建一个与原始环境相同的新环境。
如果过程中提示的某个包安装失败,如pip下列表中的panopticapi==0.1
,可以直接删除这一项,然后重试,稍后手动下载其所对应的zip文件,然后使用pip install panopticapi.zip
即可。 -
激活环境:
创建完成后,你可以通过以下命令激活新环境:# conda activate your_env_name conda activate fastinst
这种方法非常适合确保在不同开发环境之间保持一致性,也便于在团队或协作项目中共享环境配置。