【问题标题】:Can't locate LWP/Simple.pm in @INC [duplicate]在@INC 中找不到 LWP/Simple.pm [重复]
【发布时间】:2012-05-10 08:27:41
【问题描述】:

可能重复:
What's the easiest way to install a missing Perl module?

我正在尝试运行 a Perl script 将 SCXML 转换为 Graphviz DOT。我将脚本的第一行修改为:

#!/usr/bin/env perl

chmod +x 文件。当我通过./scmxl2dot.pl 运行它时,我看到以下错误输出:

在@INC 中找不到 LWP/Simple.pm(@INC 包含:/opt/local/lib/perl5/site_perl/5.12.3/darwin-multi-2level /opt/local/lib/perl5/site_perl /5.12.3 /opt/local/lib/perl5/vendor_perl/5.12.3/darwin-multi-2level /opt/local/lib/perl5/vendor_perl/5.12.3 /opt/local/lib/perl5/5.12.3 /darwin-multi-2level /opt/local/lib/perl5/5.12.3 /opt/local/lib/perl5/site_perl /opt/local/lib/perl5/vendor_perl .) 在 ./scmxml2dot.pl 第 14 行。 BEGIN 失败——编译在 ./scmxml2dot.pl 第 14 行中止。

文件的第 14 行是use LWP::Simple;

我该怎么做:

  1. 了解我是否安装了这个东西(模块?),和/或
  2. 获取 LWP::Simple 并使其可用于脚本?

这是在 OS X 10.7.3 和 Perl 5.12.3 下运行的(如错误所示)。

【问题讨论】:

标签: perl


【解决方案1】:
  1. 你已经确定你没有它(在某个地方可以找到它)。

  2. perl -MCPAN -e'install "LWP::Simple"'

【讨论】:

  • 谢谢;我不知道是否某些配置环境变量等缺少路径。
  • 尝试从 sudo 运行它
  • 你不需要手动做perl -MCPAN -e ...;你可以简单地运行cpan LWP::Simple
【解决方案2】:
  1. 从命令行执行以下命令:

    perl -MLWP::Simple -e 1
    

    如果您没有从上述命令中得到任何输出,则该模块已安装;如果出现错误,则说明未安装

  2. 安装使用

    perl -MCPAN -e'install "LWP::Simple"'
    

当 perl 遇到 use My::Module 时,它​​会遍历包含目录名称的内置 @INC 模块的元素。在每个目录中,它会检查是否有一个名为“My”的子目录,以及该子目录中是否有一个名为“Module.pm”的文件。

检查 LWP::Simple 模块在您系统上的安装位置,然后在代码的 use LWP::Simple 语句上方键入以下行。

    use lib '/usr/local/module';
    use LWP::Simple;

【讨论】:

    【解决方案3】:

    查看Perldoc 网页。这将告诉您哪些模块是标准 Perl 模块,哪些不是。

    您还可以使用perldoc 命令来查看是否安装了 Perl 模块,如果安装了,请查看其文档。

    $ perldoc LWP::Simple
    

    (如果 Perldoc 不作为命令执行,请执行 ls -l /usr/bin/perl*。在 Mac 上,某些 Perl 命令没有打开执行位。要打开它,请执行 sudo chmod a+x /usr/bin/perl)。

    碰巧LWP::Simple 不是标准的 Perl 模块,如果你没有它,你就必须安装它。大多数人已经告诉过你cpan。不幸的是,默认情况下,Mac 没有安装所需的命令行开发工具。 You'll have to install them.

    安装后,您可以使用cpan 命令安装 LWP::Simple:

    $ sudo cpan   #Run cpan and configure it. It takes about 3 minutes
    cpan> install LWP::Simple
    cpan> exit
    

    【讨论】:

    • sudo cpan 通常是一个非常糟糕的主意。它使您可以安装到系统目录中,该目录可以覆盖系统模块。这可能会在以后引起问题,例如因为您更改了属于系统软件包的文件,或者因为您无意中将系统程序使用的模块升级到了不兼容的较新版本。更好:使用local::lib 在您的主目录中安装模块,或者构建您自己的完全位于您的主目录中的 perl(最简单的方法:perlbrew)。
    猜你喜欢
    • 1970-01-01
    • 2013-11-14
    • 2020-12-09
    • 2020-11-07
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 2014-09-03
    • 2017-11-21
    相关资源
    最近更新 更多