6

我是 Perl 新手,我正在使用ActivePerl。我收到以下错误:

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

我已经尝试了所有方法,但找不到为 XML::LibXML 安装“正确”模块的步骤。

这正是正在发生的事情。我正在从命令提示符运行脚本:

c:\temp>perl myscript.pl

myscript.pl 的前几行:

#!/usr/bin/perl

use Archive::Zip qw( :ERROR_CODES :CONSTANTS );
use HTTP::Date;
use XML::Parser;
use LWP::UserAgent;
use XML::LibXML;
use Archive::Extract;
use Encode;
use LWP::Simple;

require HTTP::Request;
...

然后我得到这个错误:

c:\temp>perl myscript.pl Can't locate XML/LibXML.pm in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .) at myscript.pl line 7. BEGIN failed——编译在 myscript.pl 第 7 行中止

4

5 回答 5

7

您应该能够使用ActivePerl Perl Package Manager安装它。安装 ActivePerl 时应该已经创建了一个开始菜单快捷方式,启动GUI并搜索 xml-libxml 和 libxml-perl。

- 编辑

这是一篇关于向 PPM 添加替代存储库并安装 XML-LibXML 的帖子

于 2009-09-07T22:43:13.070 回答
3

它看起来不像 ActiveState 提供带有 XML::LibXML 的 PPM。我查看了 CPAN 上模块的 README 文件,显然这里有一个预构建的 ppm 包。

于 2009-09-08T19:18:47.420 回答
2

我最近经历了安装 XML::LibXML 的痛苦。这是我发现的:

  1. 我们正在使用 ActiveState ActivePerl 5.8.8
  2. 为了让 ActivePerl 的 PPM 能够通过我们的代理,必须创建一个值为“http://proxy.ext.[example].com”的环境变量“http_proxy”,然后重新登录。
  3. 所需的包并不都位于 ActiveState 的存储库中。添加了温尼伯大学的 Perl 存储库http://theoryx5.uwinnipeg.ca/ppms/package.xml(请注意,使用的确切存储库取决于您的 ActivePerl 版本)
  4. 手动将以下 DLL 安装到 C:\perl\bin\ (无论出于何种原因,我在构建这些 DLL 时遇到了一些麻烦,所以我最终只是从位于http://trouchelle.com/ppm/dll/的存储库中获取它们)
    • 图标v.dll
    • libxml2.dll
    • zlib1.dll
  5. 至少对于我们正在使用的 XML-LibXML 版本,软件包安装程序对于先决条件 XML-LibXML-Common 无法正常工作。在安装 XML-LibXML的其余部分之前,您必须自行安装包 XML-LibXML-Common 。

虽然它们可能不是最新版本,但我目前使用的软件包版本(包括先决条件)是:

  • XML-LibXML-Common (ver 0.13)
  • XML-LibXML(1.64 版)
  • XML 命名空间支持(1.10 版)
  • XML-SAX(版本 0.96)
于 2012-01-17T19:41:54.073 回答
1

接受的答案在 5.16 对我不起作用。从这个问题

XML::LibXML 还没有为 Perl 5.16 做好准备。安装5.14

下载:

于 2013-01-17T12:58:38.670 回答
0

最后,据我所知,我找到了唯一的替代 ActivePerl 存储库,它有一个用于 XML::LibXML 2.0121 的包,它将安装在最高 5.20.x 的 perl 版本上。

您可以从此处获取包含 5.20.2 的 ActivePerl 版本:downloads.activestate.com/ActivePerl/releases/

替代存储库称为 Bribes de Perl,位于 bribes.org/perl/

在选项中输入的存储库的 URL 是http://bribes.org/perl/ppm/

于 2015-08-30T21:31:48.813 回答