是否可以在不允许符号链接(硬链接或软链接)的文件系统上创建 conda 环境?

Is it possible to create a conda environment on a filesystem that doesn't allow symlinks (hard links or soft links)?

我想在不允许符号链接的文件系统(天蓝色文件)上创建和使用 conda 环境。这可能吗?

环境是一个安装了文件共享的 Azure 容器实例。我正在尝试在文件共享上创建环境。

我试过 conda create /path/to/share -f my_env.yaml 失败并出现类似 Error: create soft link operation unavaliable 的错误。

我所做的 sort of woks 是在容器主页 space(允许符号链接的普通文件系统)中创建环境,然后复制到文件与复制选项共享以跟随符号链接,例如:`

conda create ~/temp_env_location -f my_env.yaml  
cp -rL ~/temp_env_location /path/to/share

这个 sort 的工作原理,但即使对于小型环境,它也会复制数千个文件。非常慢,我还没有对其进行足够的测试以确保它运行良好。

对更好的方法有什么建议吗?

无软链接

首先,我有点惊讶它会尝试软链接,因为默认配置选项是 allow_softlinks: false。也许尝试明确设置:

conda config --set allow_softlinks false

并查看 conda create 是否会默认工作。如果不是那么...

仅复制

conda create 命令有一个标记表明您正在做什么:

Package Linking and Install-time Options:
  --copy                Install all packages using copies instead of hard- or
                        soft-linking.

所以你可以做到

conda create --copy /path/to/share -f my_env.yaml

并避免必须手动进行复制。不幸的是,我认为这最终会导致相同的磁盘使用。

始终复制

如果你永远需要使用这个选项,那么你可以在配置中永久设置always_copy选项:

conda config --set always_copy true