虽然perl面向对象能力偏弱,且perl6一直为人诟病,但是仍然有许多生物信息方面的软件还是需要用到perl的
这就带来了一个问题,有时候就会报错,“缺少XX模块”
也不得不承认perl安装模块不如python安装便利,直接
如果linux环境里是python3,可以先查看pip位置是否指向你用的python3
python -m pip
如果想用linux里的python2,使用pip2安装包,那么在pip2未安装的情况下,可以:
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
sudo python2 get-pip.py
python2 -m pip install PackageName
下面是一般的安装方法,例如python3环境下安装模块
安装:pip install PackageName
更新:pip install -U PackageName
移除:pip uninstall PackageName
搜索:pip search PackageName
乃至于在conda激活的环境中,pip直接就给安装到当前环境下了,简直不要太方便。
例如,我前几天用QIIME1,想把biom格式转为tsv,结果报错,h5py找不到了。pip show h5py后,又能发现h5py就在服务器里,有点头疼,不知道谁又动了环境变量。
就不管这个,直接
source activate qiime1
pip install h5py #装到了当前conda 环境的lib/python2.7/site-packages下
conda deactivate
就能用了,很方便
perl的话就有点麻烦,虽然可以安装perl-app-cpanminus,但是用cpanm安装模块的时候,由于环境变量的缘故,即便是在激活的conda环境中,它还是会安装到PERL_LOCAL_LIB_ROOT PERL_MM_OPT PERL_MB_OPT 指向的位置,这里面有个安装到当前环境的笨方法
source activate env_name
env PERL5LIB="" PERL_LOCAL_LIB_ROOT="" PERL_MM_OPT="" PERL_MB_OPT="" cpanm module_name
perl -e 'print join "\n",@INC' #查看所有模块位置
conda deactivate
这样的话,perl模块就会安装到激活的conda环境中,具体在/lib/site_perl/5.26.2
这个方法还是有些笨,我在跑QIIME2的时候发现,QIIME2也自带了一个JSON的perl模块,那么QIIME2是如何安装的呢?仔细看了看QIIME2安装的代码,原来有一条
conda install perl-json
优秀优秀,还能这么安装模块,那么以后想装的话,可以先试试
conda search perl-module_name
另外,查看已经安装哪些perl模块
不管有没有root权限,都可以利用 cpanm 然后安装 ExtUtils::Installed模块,instmodsh可以查看安装了哪些perl模块,which instmodsh 查看它被安装到哪里。
conda install perl-app-cpanminus