【发布时间】:2020-07-07 03:24:40
【问题描述】:
我想移动一个 conda 环境,但没有 conda 命令可以执行此操作。
我猜这是因为 conda“硬链接”包到环境和运行时配置变量,并且 conda 索引或 Anaconda 索引和硬链接没有正确更新。我根据conda create --clone v.s. copying the environment directly 做出这个假设(如果这个假设是错误的,请有人澄清。)
因此,当前 conda 限制(无“移动”命令)的解决方法是从父环境“构建相同的环境”。我按照这些指示Building Identical conda environments:
conda create --name myenv --file spec-file.txt
但它们不起作用,因为我收到 conda 错误:
conda-script.py create: error: argument -n/--name: not allowed with argument -p/--prefix:
这是一个两步过程:
-
创建一个规范文件,列出父环境中的所有包和版本:
conda list --explicit > spec-file.txt -
使用此包规范列表(文件“spec-file.txt”)重新创建父环境,但为子环境使用新名称,因为 conda 索引需要唯一名称。 (再次,请有人澄清这是否是一个错误的假设。)
但以下带有位置和环境名称的命令会出错(目标位置“C:\ProgramData\Anaconda3\envs”;新环境名称为“newenv2”)。
conda create --prefix "C:\\ProgramData\\Anaconda3\\envs" --name topss2 --file spec-file.txt
错误:
conda-script.py create: error: argument -n/--name: not allowed with argument -p/--prefix
我希望能够在一个命令中执行此操作并从 spec-file.txt 中指定新的(命名的)环境包,并自己指定位置(不采用 Anaconda 默认值,在我的情况下是 C:\\Users\\richadmin\\.conda\\envs\\topss )。
它可以工作,但不是没有手动步骤
我终于通过使用conda create --name myclone --clone myenv 让它工作了。但是,我必须手动更改到目标目录,然后执行没有规范文件或目标目录名称的克隆命令。我想一步一步地在命令行、脚本或 docker build 上使用它。
问题:有谁知道这是否存在选项:
conda create --name myclone --clone clone_env_name --prefix target_directory
conda --move 在 conda 命令集中的什么位置?
我们需要核心 conda 包中的 conda“移动环境”命令。在错误的位置很容易意外地创建新环境。 conda“移动”命令应该只更新配置变量和硬链接。这将停止浪费文件空间和时间克隆和删除位置不正确的环境。 (是的,我知道,“首先正确使用命令行”,或者了解Anaconda的复杂隐藏的配置界面。)这是一个常见的新手和中级Python环境使用错误,将受益于更完整的@987654332 @ 命令集。
Anaconda 使用自己的默认目录,这会给企业 IT 环境中的 Python 用户带来问题,因为企业 IT 想要将文件安装在以下位置:C:\Users\richadmin\AppData\Roaming 或 c:\users\username\.conda\envs 或 c:\program files\。
我通常使用c:\programdata\anaconda3\envs,因为这样不会在公司环境中遇到文件权限和执行问题。
【问题讨论】: