【问题标题】:Keep getting error "Can't locate Image/Grab.pm in @INC" after installing the Perl mod安装 Perl mod 后不断收到错误“Can't locate Image/Grab.pm in @INC”
【发布时间】:2015-01-21 05:01:39
【问题描述】:

我对编程有点陌生,我在编写 Perl 脚本时遇到了一些麻烦,该脚本将从网页中抓取所有图像并将它们保存在指定目录中。

这是我的代码:

use warnings;
use strict;
use lib '/home/User1/strawberry/cpan/build';
use Image::Grab;

$pic = Image::Grab->new(SEARCH_URL=>'http://www.examplesite.com',
                          REGEXP    =>'.*\.gif|.*\.jpg');
my $dir = 'images';

opendir (IMG, ">>$dir") || die "Directory doesn't exist - $!\n";
foreach ($pic) {
        print IMG "$_\n";
}
closedir IMG;

这是我在 PuTTY 中运行脚本时遇到的错误:

无法在 @INC 中找到 Image/Grab.pm(@INC 包含: /home/User1/strawberry/cpan/build /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) 在 getimage.pl 第 7 行。开始失败——编译在 getimage.pl 处中止 第 7 行。

感谢您的帮助

【问题讨论】:

    标签: perl syntax-error runtime-error perl-module


    【解决方案1】:

    当您尚未安装模块时,这是一个标准错误。 Image::Grab 不附带 perl。在名为 cpan 的东西上有很多可用的 perl 模块,例如:

    http://search.cpan.org/~mahex/Image-Grab-1.4.2/lib/Image/Grab.pod

    模块是有人用 perl 编写并可供您使用的函数库。

    现在,您必须弄清楚如何安装模块。看看这是否有效:

    $ perl -MCPAN -e shell
    
    -M => Use the module specified, in this case CPAN(comes with perl)  
    -e => execute the following perl code, in this case the function shell().
    

    然后

    cpan> install Image::Grab.  
    

    第一次这样做时,你必须回答很多问题。

    完成后:

    cpan> q  ('q' is for quit)
    

    对评论的回应:

    1) 尝试更新您的 CPAN 模块:

    cpan> install CPAN
    cpan> reload cpan
    

    然后:

    cpan> install Image::Grab
    

    从源代码安装没问题,但是如果您可以让 cpan 工作,那么它会负责下载所有依赖项,因此很轻松。我刚刚使用 cpan 下载 Image::Grab,我没有收到任何错误。它没有需要下载的依赖项。

    2) 输出是什么:

    $ perl --version (it looks like you are using perl 5.10.1)  
    

    另外,在您的问题底部添加您的 cpan 尝试的整个输出。

    3) 尝试安装另一个模块,例如:

    http://search.cpan.org/~rehsack/List-MoreUtils-0.402/lib/List/MoreUtils.pm

    【讨论】:

    • 我试过了,但它给了我这个错误:Stopping: 'install' failed for 'Image::Grab'。执行此命令失败:MAHEX/Image-Grab-1.4.2.tar.gz : make_test NO
    • 我下载了 Image-Grab-1.4.2.tar.gz 并再次尝试,但仍然出现同样的错误
    • 您可以使用cpan Image::Grab,而不是所有那些交互式的东西,它做同样的事情。如果 OP 仍然有问题,他们应该发布他们看到的完整输出。
    • @mono-arg,哎呀。请参阅我的答案附在我的答案底部。
    • @briandfoy,这就是我所做的——我不确定这是否是 perlbrew 的事情;或者是否由其他 cpan 安装程序之一启用。如果您可以在操作员发布完整输出时进行检查,我相信您将有更好的机会找出问题所在。
    【解决方案2】:

    我注意到您说您使用 CPAN 安装了模块。这会让我了解到您正在运行在 linux 操作系统上,并且每次安装脚本问您一个问题时,您只是一直按“enter”键,乐观地相信一切都会成功,就像在电影中一样。

    如果您仔细阅读,您可能会注意到安装过程中的各种问题。

    我昨天做了同样的事情,因为我不想经历解决依赖关系的所有麻烦。顺便说一句,我正在使用 CPAN。我不确定 CPAN 代表什么,但昨天它绝对不代表 Certifiably Perfect Automatic NichePerlModuleInstaller。

    很多时候没有 Perl::EasyButton。有时您必须卷起袖子开始获取 tar.gzs 并安装它们,结果发现您需要其他 tar.gzs,才发现您需要更多 tar.gzs,直到有一天您正在寻找回来,想知道你的生活去了哪里。

    除非您可以让 CPAN 正常工作。然后你只需要像猴子一样坐在你的腻子终端前,每次它问你一个问题并建议一个答案时按下回车键。如果你幸运的话,在你按下 'enter' 1837 次之后,你需要使用的模块将被安装并运行。

    我可能会建议完全不同的模块或方法,您正在寻找一种从互联网上抓取图像的简单方法。如果您长期使用 Perl,我建议您卷起袖子,弄脏自己。如果你给我一个图像的 URL,我可以从头开始编写代码,以便在几分钟内下载那个东西。然后我可以多次重复使用该代码,因为我想下载更多图像。不久之后,我就可以用从原始代码下载的图像填充硬盘。

    你需要让自己达到这一点。或者你需要寻找一种可以被大众使用的罐头解决方案,并在他们(大众)中占据一席之地。

    或者,您可以通过谷歌搜索您在 CPAN 上运行安装时遇到的确切问题,并找出您做错了什么。这是一个选择。

    而且可能还有更多选择。希望你能想出一个好的。

    祝你好运!

    【讨论】:

    • 虽然有时 cpan 命令是错误的,但通常是 Perl 模块损坏。不安装损坏的模块是正确和预期的行为。不过,有一些开关可以覆盖它。 :)
    • 感谢您的意见和建议
    猜你喜欢
    • 2015-03-19
    • 2017-02-07
    • 2011-01-17
    • 2016-04-15
    • 1970-01-01
    • 2013-06-13
    • 2021-12-09
    • 2016-12-14
    相关资源
    最近更新 更多