Thursday, October 6, 2022

[SOLVED] conda prefix (-p) still create a .conda directory on home

Issue

I'm using conda prefix to specify the directory to create my conda environment since my home directory has a small storage quota. But I noticed that conda still creating a .conda directory in my home directory which is quite large.

I'm running the following command.

conda env create -f environment.yml -p path_to_env/conda_env

The .conda dir in my home directory has:

  • environments.txt file with the symbolic link to the env create using the prefix.
  • pkgs directory with many python packages.

Is there a way to avoid creating the .conda dir in my home directory or make it very small?


Solution

The ~/.conda/environments.txt is unavoidable. The location of environments and packages is controlled by the envs_dirs and pkgs_dirs variables respectively. See docs:

conda config --describe envs_dirs pkgs_dirs
# # envs_dirs (sequence: primitive)
# #   aliases: envs_path
# #   env var string delimiter: ':'
# #   The list of directories to search for named environments. When
# #   creating a new named environment, the environment will be placed in
# #   the first writable location.
# # 
# envs_dirs: []

# # pkgs_dirs (sequence: primitive)
# #   env var string delimiter: ','
# #   The list of directories where locally-available packages are linked
# #   from at install time. Packages not locally available are downloaded
# #   and extracted into the first writable directory.
# # 
# pkgs_dirs: []

Recommendation

Provide a pkgs_dirs directory that isn't in under your home directory. Also, since Conda uses hardlinks to conserve disk usage, it is recommended you also provide an envs_dirs that is on the same volume. This also gives you the advantage that you should no longer need to specify a --prefix,-p argument to avoid environments being created under the user home, but you can instead use a --name,-n argument and specify your environments by name.



Answered By - merv
Answer Checked By - Terry (WPSolving Volunteer)