无法在@INC 中找到本地文件,不是 CPANable
Unable to locate local file in @INC, not CPANable
我目前正在尝试下载一个给我带来很多问题的程序。我 运行 在 Windows 上使用 cygwin。该程序应该 运行 正确并且安装包都已安装在管理员终端 shell 中,并且由于程序被取消'tar' 没有抛出任何错误。但是安装后程序无法在文件系统中找到名为 FASTA 的@INC 模块
rpbas@DESKTOP-4LMFDCK /cygdrive/c/Users/rpbas/Documents/Work/OliveraLab/signal-4.1
$ ./signal -t euk -f short test/euk10.fsa > euk10.fsa.short_out Can't locate FASTA.pm in @INC (you may need to install the FASTA module)
(@INC contains:
/cygdrive/c/Users/rpbas/Documents/Work/Olivera\ Lab/signal-4.1/lib
\cygdrive\c\Users\rpbas\Documents\Work\Olivera/ Lab\signal-4.1
/usr/local/lib/perl5/site_perl/5.26/x86_64-cygwin-threads
/usr/local/share/perl5/site_perl/5.26 /usr/lib/perl5/vendor_perl/5.26/x86_64-cygwin-threads
/usr/share/perl5/vendor_perl/5.26
/usr/lib/perl5/5.26/x86_64-cygwin-threads /usr/share/perl5/5.26)
at ./signal line 60.
BEGIN failed-- compilation aborted at ./signal line 60.
但是,./lib/FASTA.pm 文件显然存在并且被定向到。
rpbas@DESKTOP-4LMFDCK /cygdrive/c/Users/rpbas/Documents/Work/Olivera\ Lab/signal-4.1/lib
$ ls
FASTA.pm
代码包括行(开头)
BEGIN {
$ENV{SIGNAL} = '/cygdrive/c/Users/rpbas/Documents/Work/Olivera\ Lab/signal-4.1';
}
第 60 行
use lib "$ENV{SIGNAL}/lib";
use FASTA;
我已经在这个问题上工作了几天,这对我程序的其他部分来说是一个很大的瓶颈。如有任何帮助,我们将不胜感激!
您被 Perl 的引用插值规则给绊倒了。在单引号内,反斜杠字符仅在其后跟单引号或另一个反斜杠时充当 "escape" 字符。在所有其他情况下,它被解释为文字反斜杠。
如果你打印出来$ENV{SIGNAL}
你会看到类似
的东西
/cygdrive/c/Users/rpbas/Documents/Work/Olivera\ Lab/signal-4.1
包括反斜杠字符。不要逃避space,你应该没问题。
BEGIN {
$ENV{SIGNAL} =
'/cygdrive/c/Users/rpbas/Documents/Work/Olivera Lab/signal-4.1';
}
@INC
包含
/cygdrive/c/Users/rpbas/Documents/Work/Olivera\ Lab/signal-4.1/lib
什么时候应该包含
/cygdrive/c/Users/rpbas/Documents/Work/Olivera Lab/signal-4.1/lib
你可以替换
BEGIN {
$ENV{SIGNAL} = '/cygdrive/c/Users/rpbas/Documents/Work/Olivera\ Lab/signal-4.1';
}
use lib "$ENV{SIGNAL}/lib";
和
BEGIN {
$ENV{SIGNAL} = '/cygdrive/c/Users/rpbas/Documents/Work/Olivera Lab/signal-4.1';
}
use lib "$ENV{SIGNAL}/lib";
但更好的解决方案是将其替换为
use FindBin qw( $RealBin );
use lib ( $ENV{SIGNAL} || $RealBin ) . "/lib";
我目前正在尝试下载一个给我带来很多问题的程序。我 运行 在 Windows 上使用 cygwin。该程序应该 运行 正确并且安装包都已安装在管理员终端 shell 中,并且由于程序被取消'tar' 没有抛出任何错误。但是安装后程序无法在文件系统中找到名为 FASTA 的@INC 模块
rpbas@DESKTOP-4LMFDCK /cygdrive/c/Users/rpbas/Documents/Work/OliveraLab/signal-4.1
$ ./signal -t euk -f short test/euk10.fsa > euk10.fsa.short_out Can't locate FASTA.pm in @INC (you may need to install the FASTA module)
(@INC contains:
/cygdrive/c/Users/rpbas/Documents/Work/Olivera\ Lab/signal-4.1/lib
\cygdrive\c\Users\rpbas\Documents\Work\Olivera/ Lab\signal-4.1
/usr/local/lib/perl5/site_perl/5.26/x86_64-cygwin-threads
/usr/local/share/perl5/site_perl/5.26 /usr/lib/perl5/vendor_perl/5.26/x86_64-cygwin-threads
/usr/share/perl5/vendor_perl/5.26
/usr/lib/perl5/5.26/x86_64-cygwin-threads /usr/share/perl5/5.26)
at ./signal line 60.
BEGIN failed-- compilation aborted at ./signal line 60.
但是,./lib/FASTA.pm 文件显然存在并且被定向到。
rpbas@DESKTOP-4LMFDCK /cygdrive/c/Users/rpbas/Documents/Work/Olivera\ Lab/signal-4.1/lib
$ ls
FASTA.pm
代码包括行(开头)
BEGIN {
$ENV{SIGNAL} = '/cygdrive/c/Users/rpbas/Documents/Work/Olivera\ Lab/signal-4.1';
}
第 60 行
use lib "$ENV{SIGNAL}/lib";
use FASTA;
我已经在这个问题上工作了几天,这对我程序的其他部分来说是一个很大的瓶颈。如有任何帮助,我们将不胜感激!
您被 Perl 的引用插值规则给绊倒了。在单引号内,反斜杠字符仅在其后跟单引号或另一个反斜杠时充当 "escape" 字符。在所有其他情况下,它被解释为文字反斜杠。
如果你打印出来$ENV{SIGNAL}
你会看到类似
/cygdrive/c/Users/rpbas/Documents/Work/Olivera\ Lab/signal-4.1
包括反斜杠字符。不要逃避space,你应该没问题。
BEGIN {
$ENV{SIGNAL} =
'/cygdrive/c/Users/rpbas/Documents/Work/Olivera Lab/signal-4.1';
}
@INC
包含
/cygdrive/c/Users/rpbas/Documents/Work/Olivera\ Lab/signal-4.1/lib
什么时候应该包含
/cygdrive/c/Users/rpbas/Documents/Work/Olivera Lab/signal-4.1/lib
你可以替换
BEGIN {
$ENV{SIGNAL} = '/cygdrive/c/Users/rpbas/Documents/Work/Olivera\ Lab/signal-4.1';
}
use lib "$ENV{SIGNAL}/lib";
和
BEGIN {
$ENV{SIGNAL} = '/cygdrive/c/Users/rpbas/Documents/Work/Olivera Lab/signal-4.1';
}
use lib "$ENV{SIGNAL}/lib";
但更好的解决方案是将其替换为
use FindBin qw( $RealBin );
use lib ( $ENV{SIGNAL} || $RealBin ) . "/lib";