在 @INC 中找不到 XML/LibXML.pm

Posted

技术标签:

【中文标题】在 @INC 中找不到 XML/LibXML.pm【英文标题】:Can't locate XML/LibXML.pm in @INC 【发布时间】:2017-07-13 17:18:42 【问题描述】:

我正在尝试运行使用 XML/LibXML 包的脚本。 但是,已经安装了 XML/LibXML 包。我运行了以下命令: perl -MXML::LibXML -e 1. 没有输出,说明这个包已经安装了。

当我运行我的脚本时。出现以下错误。

在@INC 中找不到 XML/LibXML.pm(@INC 包含: /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_perl/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 .)。 BEGIN 失败——编译中止。

还有一点需要注意的是/usr/lib64/perl5/site_perl/下没有目录“5.8.8”

请建议解决这个问题。

【问题讨论】:

脚本中的shebang是什么?你从which perl 得到什么输出?你从perl -MXML::LibXML\ 999 得到什么输出? Re "还有一点需要注意的是/usr/lib64/perl5/site_perl/下没有目录"5.8.8"",这不太可能是问题。 请提供perl -MXML::LibXML -le'print "#!".$^X; print $INC"XML/LibXML.pm"'的输出和脚本的第一行。 【参考方案1】:

有三种可能:

您安装了两次perl,而您的脚本使用了“错误”的一个。

要么使用脚本使用的perl 安装 XML::LibXML,要么将脚本的 shebang (#!) 行替换为以下输出:

perl -MXML::LibXML -le'print "#!".$^X'

环境差异。

如果 XML::LibXML 安装在非标准目录中,则可能是 PERL5LIB 用于在您执行测试时将其传达给 perl,而不是在您运行脚本时。

权限问题。

这不太可能。

如果脚本以与您的测试相同的用户身份运行,则不是权限问题。

如果是权限问题,请确保执行脚本的用户可以访问库目录。

【讨论】:

以上是关于在 @INC 中找不到 XML/LibXML.pm的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中找不到此函数的标识符

SerializationException:在 c# unity3d 中找不到类型'System.Collections.Generic.List`1

学员问Can't locate DBD/SQLite.pm in @INC 怎么解决?

Rstudio 中的源 .bashrc

Laravel 4在TestCase中找不到测试

为啥在集合中找不到 Mysql 存储过程参数?