雖然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