Perl的@INCpath中没有包含已安装的模块

在包含Excel-Writer-XLSX模块的@INCpath中遇到问题。 在发布这个问题之前,我做了一些研究并尝试了几个解决scheme,但都失败了。

所以我做了

$sudo perl -MCPAN -e 'install Excel::Writer::XLSX' 

但是在我运行代码之后,我收到了这个消息

 --can't locate Excel/Writer/XLSX.pm in @INC(you may need to install the Excel::Writer::XLSX module) (@INC contains: /Library/Perl/5.18/darwin-thread-multi-2level/...) 

这不是一个重复的问题,因为Excel :: Writer :: XLSX模块已成功安装在我的电脑中,我不需要再次安装它。 事情是当我检查我的库文件夹,perl5文件夹不存在,因为它是@INCpathbuild议。 相反,Perl5文件夹是在我的用户文件夹…实际上,该模块可以在perl5文件夹内的lib文件夹中find

我不太确定发生了什么…为什么@INCpath显示库文件夹内的perl / 5.18? 如果你知道如何解决这个问题,请咨询。 非常感谢!

确保@INC包含模块的安装path。 你可以通过指定

export PERL5LIB=/home/foobar/code (对于Linux)(将其添加到〜/ .bashrc使其在login时始终可用)。

set PERL5LIB = c:\path\to\dir (对于Windows)


另请参阅:

  • 如何在不在@INC的目录中使用Perl模块?

  • 如何更改@INC在非标准位置查找Perl模块

#!/ usr / bin / perl之后的perl代码的最顶端

 BEGIN { push(@INC, '/home/penny/perlModules'); } use my::module; use File::Path; ... 

这将允许您的代码使用perlModules目录中安装的任何模块。

缺点是你必须修改代码。 或者你可以使用上面回答的PERL5LIB envpath。