无法在@INC中找到模块,但CPAN表示模块是最新的

时间:2016-02-03 20:20:48

标签: c++ perl qt

我目前正在使用C ++开发一个使用Qt的小项目。

我的代码正在调用Perl脚本,我收到了这个错误:

  

无法在@INC

中找到Proc / ProcessTable.pm

所以我去安装模块,CPAN说:

  

Proc :: ProcessTable是最新的(0.53)。

所以我搜索了一下,显然可能是因为涉及两个Perl副本。我试图让模块在本地目录上,但Qt仍然无法找到它。我被卡住了。

此外,如果我从命令行运行Perl脚本,一切正常。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

使用perl -MCPAN -eshell,但将perl更改为您要为其安装模块的Perl的直接路径。

如果这不起作用,请尝试在失败BEGIN { print "$_\n" for @INC }之前打印出@INC(例如use)并将其与perl -e'print "$_\n" for @INC'给出的内容进行比较。代码中的某些内容可能是从@INC中删除目录。

或者你可以试试

force install Proc::ProcessTable

在CPAN。

答案 1 :(得分:0)

如果您知道安装Proc/ProcessTable.pm的路径 与C ++程序使用的perl版本兼容,你可以

  1. 使用-I调用perl:

    perl -I /path/to/modules myscript.pl

    其中/path/to/modulesProc/ProcessTable.pm的父级,
    /path/to/modules/Proc/ProcessTable.pm存在。

  2. 将环境变量设置为模块:

    export PERL5LIB=/path/to/modules

    然后启动你的脚本。这里给出的路径是前缀 内置的@INC路径。

  3. 让您的脚本使用其他路径:

    use lib "/path/to/modules";

  4. 我更喜欢1.或2.因为脚本中的硬编码路径几乎总是一个坏主意。