MacOS Catalina 于 2019 年 10 月 7 日发布,并给 Anaconda 用户带来了相当大的困扰。Apple 决定不允许 Anaconda 的默认安装位置在根文件夹中。它将该文件夹移动到您桌面上的一个名为“Relocated Items”(重新放置的项目)的文件夹中的 Security(安全)文件夹中。如果您使用了 Anaconda 的 .pkg 安装程序,这可能会破坏您的 Anaconda 安装。许多用户在 https://github.com/ContinuumIO/anaconda-issues/issues/10998 讨论了这种破坏。
不幸的是,对于您当前的安装,没有简单的修复方法。有些人建议将 Anaconda 文件夹从“Relocated Items”文件夹移回您的主文件夹,然后修改 PATH 以指向新位置。这是一种部分修复,可能会恢复您的一些核心功能。不幸的是,给定 conda 环境中的许多文件都包含指向其安装路径(也称为前缀)的硬编码路径。当您复制或移动文件夹时,这些硬编码路径是不准确的,并且您环境中的程序可能会在错误的位置查找其他内容并导致崩溃。
那么,接下来该怎么办呢?您有几个选项。
重新安装
选择其一
- 使用全新的 Anaconda 安装重新开始。在安装过程中注意确保您的安装路径是您主文件夹的子文件夹,例如 /Users/me/anaconda3
- 使用 .sh 安装程序而不是 .pkg 安装程序重新开始。此安装程序使选择目标路径更简单,并为您提供更多关于您希望 shell 如何表现的选择。
我们已经测试了当前可用的 shell 安装程序,发现它们在 Catalina 上运行良好。如果您依赖 GUI 安装程序,则需要等待即将发布的 Anaconda 2019.10 安装程序,该安装程序将根据 Apple 更严格的政策进行签名和公证。
修复
这是实验性的,但可以让您修复旧的安装并保留所有旧的环境。为此,您将使用我们的独立前缀替换工具,网址为 https://repo.anaconda.com/pkgs/misc/cpr-exec/cpr-0.1.1-osx-64.exe 请注意,虽然这些文件具有“.exe”文件后缀,但它们不是 Windows 可执行文件。我们使用 .exe 后缀来表示独立可执行文件。
该实验性工具使用 pyinstaller 从 https://github.com/conda/conda-prefix-replacement 的代码制作独立执行文件,这是一个 conda 和 conda-build 之间分散的前缀检测和替换代码的整合集合。我们为 CPR 添加了一个新颖的功能,用于“重新安置”环境,这是解决移动环境问题所需的功能。具体来说,给定当前(新)前缀,重新安置尝试从文件内部检测旧前缀,然后调整检测到的文件以具有新的前缀值。
步骤
1. 在终端中,下载文件并使其可执行
<span>curl -L https://repo.anaconda.com/pkgs/misc/cpr-exec/cpr-0.1.1-osx-64.exe -o cpr && chmod +x cpr</span>
2. 运行 CPR 工具以修复嵌入的路径
假设您最初安装到 /Anaconda3,Apple 很乐意将其移动到“Relocated Items”。您已将该文件夹移动到 ~/anaconda3。以下是使用 CPR 修复此问题的示例命令
<span>./cpr rehome ~/anaconda3</span>
同样,它通过查找已知以易于解析的方式记录前缀的某些文件来查找您的旧前缀。如果失败,只要您知道原始路径,您仍然可以修复问题
<span>./cpr rehome ~/anaconda3 --old-prefix /Anaconda3</span>
CPR 命令是递归的。由于环境默认位于您的 Anaconda[2|3] 文件夹内的 envs 文件夹中,因此 CPR 也会修复您的基本前缀中的所有环境。
3. 重新运行 conda init 以修复您的 conda shell 命令
<span>source ~/anaconda3/bin/activate</span>
<span>conda init</span>
注意:如果您使用 bash 以外的 shell,请在 conda init 命令中指定它
<span>conda init zsh</span>
4. 修复您的 ~/.conda/environments.txt 文件
打开 ~/.conda/environments.txt 文件,并查找/替换旧安装位置(例如 /Anaconda3)的所有实例,将其替换为新位置(例如 ~/anaconda3)。
5. 在其他配置文件中查找对旧环境的任何剩余引用
Anaconda 中的许多软件包都管理自己的配置文件,通常在您主目录的某个子文件夹中。您可以使用 grep 或 ripgrep 等工具来查找这些文件。然后您需要编辑它们并修复路径,就像您对 environments.txt 文件所做的那样。示例 grep 命令可能是
<span>grep -R “/Anaconda3” ~</span>
我们希望这能帮助您重回正轨。