如何便捷的安装perl模块

虽然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 查看它被安装到哪里。

你可能感兴趣的:(如何便捷的安装perl模块)