如何在创建环境时将 .conda 从一个文件夹移动到另一个文件夹

How to move .conda from one folder to another at the moment of creating the environment

我必须连接到一台服务器,在该服务器上我的用户可以访问 /home/users/user_name 中的一个小分区,其中我的配额有限 space 并且更大的分区进入 /big_partition/users/user

登录到该服务器后,我将到达 /home/users/user_name 的 bigging。之后,我正在执行以下步骤。

  1. cd /big_partition/users/user
  2. create conda --prefix=envs python=3.6

在第 4 行,它说 Package plan for installation in environment /big_partition/users/user/envs: 可以。

  1. y,但我收到以下消息。

    OSError: [Errno 122] Disk quota exceeded: '/home/users/user_name/.conda/envs/.pkgs/python-3.6.2-0/lib/python3.6/unittest/result.py'

任何人都可以帮助我了解如何在创建此环境时将 .conda 文件夹从 /home/users/user_name 移动到 /big_partition/users/user

我找到了解决方案。我需要做的就是用我想成为 .conda

的路径导出 CONDA_ENVS_PATH

export CONDA_ENVS_PATH=.

配置环境和包默认位置

我猜想,尽管您努力将您的环境放在大分区上,但仍然有一个默认的用户级 程序包缓存 并且它正在填满整个家划分。至少,在大分区上设置一个新的package cache and a default environments directory

# create a new pkgs_dirs (wherever, doesn't have to be hidden)
mkdir -p /big_partition/users/user/.conda/pkgs

# add it to Conda as your default
conda config --add pkgs_dirs /big_partition/users/user/.conda/pkgs

# create a new envs_dirs (again wherever)
mkdir -p /big_partition/users/user/.conda/envs

# add it to Conda as your default
conda config --add envs_dirs /big_partition/users/user/.conda/envs

现在您不必再为使用 --prefix 标志而烦恼 - 您的 named 环境 (conda create -n foo) 默认为在此目录中创建,您可以按名称而不是目录激活 (conda activate foo)。

正在转移以前的环境和程序包缓存

不幸的是,没有一种在不破坏硬链接的情况下跨文件系统移动 Conda 环境的好方法。相反,您需要重新创建您的环境。由于您可能想要也可能不想为此烦恼,所以我只打算概述一下。如果需要我可以详细说明。

  1. 存档环境。 使用 conda env export -n foo > foo.yaml(每个环境一个。)
  2. 移动包缓存。将旧包缓存 (/home/users/user_name/.conda/envs/.pkgs/) 的内容复制到新包缓存。
  3. 重新创建环境。使用conda env create -n foo -f foo.yaml

同样,您完全可以跳过这一步。这主要是如果你想非常彻底地传输并且不必为你已经创建的环境重新下载东西。

之后你可以删除旧 ~/.conda/envs/pkgs 文件夹下的一些东西。