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

Mir*_*cea 12 python linux anaconda conda anaconda3

我必须连接到一台服务器,我的用户可以访问其中的一个小分区,/home/users/user_name我有一个有限的空间配额和一个更大的分区/big_partition/users/user

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

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

在第四行,它说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

mer*_*erv 26

配置环境和包默认位置

我猜想,尽管您努力将环境放在大分区上,但仍然存在默认的用户级包缓存,并且填满了主分区。至少,在大分区上设置一个新的包缓存和默认环境目录:

# 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
Run Code Online (Sandbox Code Playgroud)

现在您不必再为使用该--prefix标志而烦恼 - 默认情况下,您的命名环境 ( 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文件夹下的一些内容。