套娃一样的conda和r

最近有粉丝提问,他在R里面安装了conda,但是不知道如何启动和配置那个conda,让我非常吃惊。

一般来说, 假如大家有一些R包安装非常困难,或者某个数据分析的流程基于了一系列R包,我们会使用conda来安装R语言及其配套的R包,比如:singlecelltk和singlecellsignalr,很简单的几句话代码,主要是安装适合自己用户的R语言环境及相关的R包:

conda create -n r r-essentials r-base zlib pandoc
conda activate r
conda install -c bioconda bioconductor-singlecelltk
conda install -c bioconda bioconductor-singlecellsignalr
which R
ls -lh $HOME/miniconda3/envs/r

这个时候,你无需理会你的服务器的R语言版本或者R包啦,因为你每次都会 conda activate r 激活你自己的R语言环境哦。我们在这个环境里面安装了 bioconductor的 singlecelltk和singlecellsignalr,因为它们本身就会依赖大量的其它R语言包,所以理论上这个时候你的这个 conda activate r 小环境,已经是比较好的可以用来做单细胞转录组数据分析的啦!

两个工具的主页分别是:

但是提问的粉丝的意思是,他其实本来是不想使用conda这个东西,奈何有一些R包,它依赖很多操作系统的外部环境,所以这个R包就自己给他的电脑安装了一个conda,所以他就不知道如何调用这个conda了。我看了看他的报错如下所示:

CondaError: KeyboardInterrupt

Exception ignored in: <module 'threading' from '/Users/test/Library/r-miniconda/lib/python3.9/threading.py'>
Traceback (most recent call last):
 File "/Users/test/Library/r-miniconda/lib/python3.9/threading.py", line 1415, in _shutdown
 atexit_call()
 File "/Users/test/Library/r-miniconda/lib/python3.9/concurrent/futures/thread.py", line 31, in _python_exit
 t.join()
 File "/Users/test/Library/r-miniconda/lib/python3.9/threading.py", line 1033, in join
 self._wait_for_tstate_lock()
 File "/Users/test/Library/r-miniconda/lib/python3.9/threading.py", line 1049, in _wait_for_tstate_lock
 elif lock.acquire(block, timeout):

这个其实是conda常见的问题,很容易通过修改镜像的方式解决掉,但前提是你知道自己的conda在哪,而提问的粉丝他的conda其实并不是他自己的安装的, 是R语言帮助他安装的,所以他陷入了一个套娃。其实报错信息里面提示了他的conda的全路径,所以进入终端后,使用下面的代码即可:

/Users/test/Library/r-miniconda/bin/conda --help
conda='/Users/jmzeng/Library/r-miniconda/bin/conda'
$conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
$conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
$conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
$conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
$conda config --set show_channel_urls yes
# $conda update --all # 非必须

/Users/test/Library/r-miniconda/bin/pip install umap-learn
# Downloading numpy-1.21.5-cp39-cp39-macosx_10_9_x86_64.whl (17.0 MB)

网络这个问题啊,有时候确实很闹心。我以为是conda设置好镜像就可以了,结果使用它里面的Python的配套的pip下载,仍然是需要设置镜像,否则速度仍然是很可怜:

可怜的网络

所以正确的代码应该是:

/Users/test/Library/r-miniconda/bin/pip instal -i https://pypi.tuna.tsinghua.edu.cn/simple l umap-learn

增加了 -i https://pypi.tuna.tsinghua.edu.cn/simple这样的镜像设置。

Comments are closed.