
anaconda可以认为是一个完整版本的conda,里面有很多已经装好的软件,miniconda是精简版,里面什么都没装,所有想用的软件都是现用现装,推荐装miniconda。
2. miniconda的安装
MacOS:
wget https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
bash Miniconda3-latest-MacOSX-x86_64.sh
Linux:
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
Win10 bash:
wget https://repo.continuum.io/miniconda/Miniconda3-4.3.21-Linux-x86_64.sh
bash Miniconda3-4.3.21-Linux-x86_64.sh
一顿yes之后,就可以了。关闭terminal再重新打开,输入conda,应该会显示很多选项。
3. 激活bioconda:
conda config --add channels r
conda config --add channels conda-forge
conda config --add channels bioconda
上述命令只需运行一次即可,以后都不用再运行这些了。
4. 更新conda:
首先要deactivate conda:
source deactivate
然后更新conda:
conda update conda
5. 使用conda:
创建一个名为bioinfo的environment:
conda create -y --name bioinfo python=3.7
然后激活bioinfo:
source activate bioinfo
装一个软件合集(来自biostar handbook):
curl http://data.biostarhandbook.com/install/conda.txt | xargs conda install -y
如果以后需要装这个软件合集里没有的软件,则只需:
conda install toolname
即可。
6. 更新biostar handbook提供的软件合集(推荐一年一次):
curl http://data.biostarhandbook.com/install/conda.txt | xargs conda upgrade
本篇介绍如何让linux在不激活任何环境时,调用python命令直接使用到conda的某个子环境。
首先说明本篇文章的工作原由,以及踩过的坑。
在之前的工作中,一般进行python开发都会使用conda进行包管理,以达到隔离多个环境的目的。例如:
问题来了,在一些场景中,外部程序需要调用服务器上的api,又无法做出 conda activate 的命令,命令是直接使用 python xxx.py ,这时候只能使用linux自带的python命令,或者conda的base环境的python命令。所以需要将环境搭建在linux的python或者conda的base。搭建过程中,遇到的问题来自两个方面:
解决方法:将linux默认的python做软链接,链接到conda的子环境。
创建环境: conda create -n child_env python=3.6
切换环境: conda activate child_env
安装pytorch: conda install pytorch torchvision cudatoolkit=10.0
安装tensorflow: conda install tensorflow-gpu
安装其他包: conda install xxx,xxx,...
先将老的链接备份: mv /usr/bin/python /usr/bin/python22
再做链接: ln -s /root/anaconda3/envs/child_env/bin/python3 /usr/bin/python
第一个路径需要改成自己的anaconda路径,child_env改成自己的环境名,第二个路径不用改。
先关掉conda环境: conda deactivate
再运行: python xxx.py
用这个方法,虽然解决了直接调用python命令的问题。但是引入了新的问题。
更换默认python版本
有时候在使用某些软件的时候,需要激活conda的环境,如果在搭建pipeline的时候,一般都是在程序内部进行activate env。在这里我用的是Perl搭建pipeline的。
刚开始想的比较简单,认为和以前一样,直接activate:
但是不行,直接就报错了:
这里表明没有进入conda的环境,设置有问题。
于是先使用source激活,再activate env:
接着报错: sh: 1: source: not found
接着在Perl中调用:
出现错误:
这里的错误:
首先编写一个用于activate的shell脚本:
保存后,接着在Perl中调用这个shell脚本:
在 bash 等 shell 中, source 是一个内置的函数,其意义在于读取文件并在本地解释这个文件,有点类似于 c 中的 #include
在现在的情况下面, source 没有任何意义,应该在脚本首行标注一下 shebang : #! ,告诉系统使用哪一个 shell 来执行这个脚本,或者直接告诉系统用的是什么: bash *****.sh
Conda activate not working
How to run “source” command (Linux) from a perl script
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)