我正在使用Dist::Zilla模块来发布和测试我的模块。我也在使用Perlbrew。当我使用包含我的模块的 perlbrew 运行脚本时,脚本运行良好:
use strict;
use My::Module;
但是,每当我dzil test
在尝试包含我的模块的测试中运行时:
#!perl -T
use strict;
use warnings FATAL => 'all';
use Test::More;
plan tests => 1;
BEGIN {
use_ok( 'My::Module' ) || print "Bail out!\n";
}
diag( "Testing My::Module $My::Module::VERSION, Perl $], $^X" );
它失败并出现此错误,说它找不到模块鼠标(我的模块包括):
Error: Can't locate Mouse.pm in @INC (you may need to install the Mouse module) (@INC contains:
/Users/user/github/My/Module/.build/HoKOnIQGYr/blib/lib
/Users/user/github/My/Module/.build/HoKOnIQGYr/blib/arch
/Users/user/perl5/lib/perl5/darwin-thread-multi-2level
/Users/user/perl5/lib/perl5/darwin-thread-multi-2level
/Users/user/perl5/lib/perl5
/opt/local/lib/perl5/vendor_perl/5.16.1/darwin-thread-multi-2level/
/Users/user/perl5/lib/perl5/darwin-thread-multi-2level
/Users/user/perl5/lib/perl5
/opt/local/lib/perl5/vendor_perl/5.16.1/darwin-thread-multi-2level/
/Library/Perl/5.18/darwin-thread-multi-2level /Library/Perl/5.18
/Network/Library/Perl/5.18/darwin-thread-multi-2level
/Network/Library/Perl/5.18
/Library/Perl/Updates/5.18.2/darwin-thread-multi-2level
/Library/Perl/Updates/5.18.2
/System/Library/Perl/5.18/darwin-thread-multi-2level
/System/Library/Perl/5.18
/System/Library/Perl/Extras/5.18/darwin-thread-multi-2level
/System/Library/Perl/Extras/5.18) at
/Users/user/github/My/Module/.build/HoKOnIQGYr/blib/lib/My/Module.pm line 4.
它说它找不到 Mouse.pm,我知道它位于
/Users/user/perl5/lib/perl5/darwin-2level
我看到由于某种原因该目录不在 中@INC
,这很有趣,因为如果我运行此命令以打印出以下中的所有目录@INC
:
perl -e 'print "$_\n" for @INC'
我得到:
/Users/user/perl5/lib/perl5/darwin-2level
/Users/user/perl5/lib/perl5
/opt/local/lib/perl5/vendor_perl/5.16.1/darwin-thread-multi-2level/
/Users/user/perl5/perlbrew/perls/perl-5.16.0/lib/site_perl/5.16.0/darwin-2level
/Users/user/perl5/perlbrew/perls/perl-5.16.0/lib/site_perl/5.16.0
/Users/user/perl5/perlbrew/perls/perl-5.16.0/lib/5.16.0/darwin-2level
/Users/user/perl5/perlbrew/perls/perl-5.16.0/lib/5.16.0
.
因此,当我在命令行上运行 perl 时,该darwin-2level
目录存在于 中@INC
,但无论何时运行dzil test
它都不存在。这可能与 没有太大关系Dist::Zilla
,因为我认为Dist::Zilla
只是为您创建Makefile.PL
和运行make test
。这可能是因为需要测试旧版本的 perl 吗?像这样:
use 5.006;
但即便如此,在测试期间仍存在一些 Perlbrew 目录,@INC
例如
/Users/user/perl5/lib/perl5/darwin-thread-multi-2level
有谁知道我如何做到这一点,以便我可以在我的 perl 目录中使用鼠标安装而不是安装系统范围的鼠标?我在运行时遇到了另一个模块的错误,dzil test
该模块与Mouse
. 我可以通过在系统范围内安装模块而不是在我的主目录中本地安装模块来解决这个问题perl5
,但我更喜欢使用 Perlbrew 安装的鼠标,如果可能的话,不要弄乱我的系统 perl。我正在使用 Perlbrew 0.73 版。