@INC中找不到模块,即使它已列出

时间:2015-08-30 13:37:24

标签: r perl

我在R,bioconductor中使用sRAP包。我收到这个错误:

 > logVals<-RNA.norm(paste0( ResultsDirectory,batch,'_only'),      paste0(ResultsDirectory,'RPKM_logs'),ResultsDirectory)
Can't locate Compress/Raw/Zlib.pm in @INC (@INC contains:    /cluster/project8/vyp/cian/support/R/WriteXLS/Perl /home/sejjcmu/bin/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/
Compress/Raw/Zlib.pm /home/sejjcmu/bin/Perl/Compress-Zlib-1.41/Zlib.pm /home/sejjcmu/bin/Perl/Compress-Zlib-1.41 /home/sejjcmu/bin/Perl/Compress-Raw-Zlib-2.068 /home/sejjcmu/bin /sh
are/apps/genomics/vcftools_0.1.8a/perl /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_per
 l/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8      /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at /cluster/pr
 oject8/vyp/cian/support/R/WriteXLS/Perl/Archive/Zip.pm line 9.

我对perl不太了解,所以我不明白为什么它说它无法在@INC中找到这个zlib.pm然后继续列出它。我确实安装了该软件包并将其添加到我的bashrc中的PERL5LIB

编辑: R版本3.1.2(2014-10-31) - &#34;南瓜头盔&#34; perl,为x86_64-linux-thread-multi

构建的v5.8.8

我尝试了什么。我已经改变了这个调用的R函数,添加了Perl I preamble / Compress / Raw&#39;,它没有用。

2 个答案:

答案 0 :(得分:4)

您已将/home/sejjcmu/bin/Perl/Compress-Zlib-1.41/Zlib.pm添加到@INC数组中,方法是将其添加到PERL5LIB环境变量中。但@INC包含要搜索的路径的列表,其方式与PATH环境变量类似。正如消息所说,“无法在任何这些目录中找到Compress/Raw/Zlib.pm,这是因为/home/sejjcmu/bin/Perl/Compress-Zlib-1.41/Zlib.pm甚至不是目录

你说你已经安装了软件包,但是没有标准工具可以把文件放在那个位置,所以我相信你一定要复制它,这很大程度上是你遇到问题的原因

如果您想将此模块放在/home/sejjcmu/bin/Perl中,则应将其安装在/home/sejjcmu/bin/Perl/Compress/Raw/Zlib.pm,并将/home/sejjcmu/bin/Perl添加到@INC阵列

但你真的不应该手动复制Perl模块。您应该首先使用cpan或类似工具正确安装模块。

这是一个可用于将Compress::Raw::Zlib正确安装到自定义库位置

的对话框
$ cpan

cpan shell -- CPAN exploration and modules installation (v2.11)
Enter 'h' for help.


cpan> o conf makepl_arg PREFIX=/home/sejjcmu/bin/Perl
cpan> install Compress::Raw::Zlib

答案 1 :(得分:1)

PERL5LIB不应包含单个模块,而应包含其根目录的路径,即/home/sejjcmu/bin/lib64/perl5/site_perl/5.8.8/(不需要架构部分)。