安装/激活 R 时 conda 无限期挂起

问题描述

昨天的某个时候,我开始遇到(迷你)conda 和包含 R 的环境的问题。基本上将 R 安装到环境中,或激活包含 SELECT * FROM Table A1 INNER JOIN table B ON B.fieldnaame = 'ABC' AND fieldname = 'A' UNION ALL SELECT * FROM Table A2 INNER JOIN table B ON B.fieldnaame = 'ABC' AND fieldname = 'A' UNION ALL SELECT * FROM Table A3 INNER JOIN table B ON B.fieldnaame = 'ABC' AND fieldname = 'A' UNION ALL SELECT * FROM Table A4 INNER JOIN table B ON B.fieldnaame = 'ABC' AND fieldname = 'A'; (或其某些依赖项)的环境可重现地导致 conda 进程完全冻结终端。 Ctrl+c 什么都不做,按回车键甚至不会创建换行符。它完全冻结了。

以下为我重现了错误

r-base

这只是无限期地挂起(或者至少它持续了一夜没有变化)。

conda hanging in my console after trying to run "conda activate r-env"

我已经尝试删除 conda 并重新安装它,并删除我的大部分环境。

...有什么想法吗?

编辑:不知何故,这是 conda-forge 版本的 r-base 执行此操作...从我的 conda create -n r-env r-base conda activate r-env 中的频道列表中删除它意味着这不再挂起。奇怪的是,conda-forge 的 r-base 上次更新是在 7 天前,直到昨天我才遇到问题。

解决方法

调试 Conda 激活

Conda 激活主要是在 shell 会话中管理环境变量。对于 POSIX shell,可以使用

查看运行的核心
# need to use the actual binary `conda` 
~/miniconda3/condabin/conda shell.posix activate r-env

对我来说,这显示设置了几个 Conda 特定的环境变量,以及与包关联的四个激活脚本:

  • gfortran_osx-64
  • r-base
  • clang_osx-64
  • clangxx_osx-64

我会尝试按顺序运行每一个,以找出问题在哪里。

指出 BASH 的 set -x 命令也可能很有用,以跟踪所有正在运行的命令。例如,您可能会尝试以下操作:

set -x && . ~/miniconda3/envs/r-env/etc/conda/activate.d/activate-r-base.sh && set +x

跟踪那个特定的激活脚本。

其他 Conda 激活说明

可以通过以下方式查看 conda activate 的 BASH 源:

type conda
type __conda_activate

但这不太可能发生在出现问题的地方,因为这对于安装了 conda-forge::r-base 的环境来说似乎是特殊的。