问题描述
一段时间以来,我一直在成功地从python运行perl脚本。我刚刚将所有内容移到了一台新计算机(都在运行Windows 10)上,但是遇到了问题。
运行脚本时出现错误:
Can't locate DBI.pm in @INC (you may need to install the DBI module) (@INC contains: /usr/lib/perl5/site_perl /usr/share/perl5/site_perl /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5/core_perl /usr/share/perl5/core_perl)
在第一行use DBI;
上。
我转而使用Perl (command line)
,使用脚本选择了文件夹并运行perl <filename>
-同样的错误。
DBI
似乎已正确安装在C:\StrawBerry\perl\vendor\lib
中,并且当我通过@INC
检查时该目录位于我的perl -V
中:
@INC:
C:/StrawBerry/perl/site/lib
C:/StrawBerry/perl/vendor/lib
C:/StrawBerry/perl/lib
我尝试使用DBI
重新安装cpan Module::DBI
,但出现错误:
Could not expand [Module::DBI]. Check the module name.
我尝试用perl -MCPAN -e "install Bundle::DBI"
安装它,但是失败了:
Test Summary Report
-------------------
t/original.t (Wstat: 0 Tests: 27 Failed: 1)
Failed test: 26
Files=1,Tests=27,1 wallclock secs ( 0.05 usr + 0.01 sys = 0.06 cpu)
Result: FAIL
Failed 1/1 test programs. 1/27 subtests Failed.
gmake: *** [Makefile:863: test_dynamic] Error 255
NEILB/IO-Tee-0.65.tar.gz
C:\STRAWB~1\c\bin\gmake.exe test -- NOT OK
//hint// to see the cpan-testers results for installing this module,try:
reports NEILB/IO-Tee-0.65.tar.gz
Stopping: 'install' Failed for 'IO::Tee'.
在以前的机器上进行设置时,我没有任何问题(两次都是原始安装,没有导入其他模块)。
我尝试几次重新安装StrawBerry,但无济于事。我试过安装perlbrew和ActivePerl,但两者都遇到了问题。我现在也已经用尽了Google寻找潜在的解决方案。
有什么想法吗?
编辑:
遵循建议here,我已经运行perl -e "use DBI;"
,并且没有错误消息显然表明DBI
已正确安装?
编辑2
好吧,所以我设法通过Perl (command line)
和Windows cmd
使事情正常进行-完全重新安装了MysqL,但这实际上没有任何意义。但是,我仍然无法使用Git Bash
执行脚本。我总是收到相同的错误...
解决方法
[更新:IO-Tee 0.66中已修复的错误。]
失败的测试假设sysread
遵守Windows中添加到文件句柄的:crlf
层。但事实并非如此。这是一个不好的测试,不是模块的问题。因此,由于这是唯一失败的测试,因此您可以使用以下命令安全地强制安装模块:
cpan -f IO::Tee
在测试失败的情况下强制安装模块通常不是一个好主意,因为这意味着您正在强制安装可能损坏的模块。但这没关系,因为已经确定问题出在测试上,而不是模块本身。
我已经提交了bug report,其中包含对该问题的更详尽的说明和解决方案。