Can';无法在@INC中找到模块,但CPAN说模块是最新的 我现在正在用C++开发一个QT小项目。
我的代码正在调用Perl脚本,出现以下错误: 在@INC中找不到Proc/ProcessTable.pm 所以我去安装模块,CPAN说: Proc::ProcessTable是最新的(0.53) 所以我搜索了一下,很明显这可能是因为涉及到两个Perl副本。我试图在本地目录上获取模块,但Qt仍然无法找到它。我卡住了 此外,如果我从命令行运行Perl脚本,一切正常Can';无法在@INC中找到模块,但CPAN说模块是最新的 我现在正在用C++开发一个QT小项目。,c++,perl,qt,C++,Perl,Qt,我的代码正在调用Perl脚本,出现以下错误: 在@INC中找不到Proc/ProcessTable.pm 所以我去安装模块,CPAN说: Proc::ProcessTable是最新的(0.53) 所以我搜索了一下,很明显这可能是因为涉及到两个Perl副本。我试图在本地目录上获取模块,但Qt仍然无法找到它。我卡住了 此外,如果我从命令行运行Perl脚本,一切正常 有什么建议吗?使用perl-MCPAN-eshell,但将perl更改为要为其安装模块的perl的直接路径 如果这不起作用,在你失败之前
有什么建议吗?使用
perl-MCPAN-eshell
,但将perl
更改为要为其安装模块的perl的直接路径
如果这不起作用,在你失败之前,试着打印出@INC(例如,BEGIN{print“$\n”for@INC}
),然后使用use
,并将其与perl-e'print“$\n”for@INC
给出的结果进行比较。代码中的某些内容可能正在从@INC删除目录
或者你可以试试
force install Proc::ProcessTable
在CPAN中。如果您知道
Proc/ProcessTable.pm
的安装路径,并且
与C++程序使用的Perl版本兼容,可以< /P>
-I
调用perl:
perl-I/path/to/modules myscript.pl
其中/path/to/modules
是Proc/ProcessTable.pm
,i、 e.
/path/to/modules/Proc/ProcessTable.pm
存在export PERL5LIB=/path/to/modules
然后开始你的脚本。这里给出的路径是为
内置的@INC
路径使用lib“/path/to/modules”代码>
我想要一个。或2。因为脚本中的硬编码路径几乎总是一个坏主意。我知道您在同一台机器上安装了两个不同的perl,对吗?你的“正则”Perl有<代码> PRO/PROSPESTRAMP。PM 已安装,而由C++调用的脚本所使用的Perl没有?有很多方法可以告诉perl在哪里搜索它的
@INC
lude路径。如果我是对的,我可能可以帮助您。最简单的方法是查看perl脚本shebang path中的路径。用-MCPAN-eshell
运行perl并安装它。这样仍然告诉我它是最新的。@AlexisCoquard:shebang行说什么?如果将perl的路径与-MProc::ProcessTable-E'1'
一起使用,会发生什么?为什么在这个系统上安装了两个perl?它们有用吗?您可以删除一个吗?尝试了第一个,现在错误消息更改为:无法加载。。找不到符号:\u PL\u curpad。我浏览了谷歌,没有发现太多:(我假设您的模块不是纯perl,但也使用了一些*。因此
。试试@Sobrique的建议,这听起来很有希望。@PerlDog:相对硬编码路径很好。例如,如果您遇到符号错误,您可能指向为不同版本或体系结构的perl.U编译的Proc::ProcessTableNo幸运这没有什么明显的效果。但是如果OP是可信的,那么在HeSESO上有一些非常奇怪的是,它是不起作用的,然后我从终端和C++程序开始运行{打印} $Inc},它显示了2个不同的目录,所以我猜我应该去挖掘它。