无法在 conda 安装程序的@INC 中找到 File/Slurp.pm
Can't locate File/Slurp.pm in @INC in a conda installed program
我开始遇到使用 conda ('abricate'、'mlst') 安装的不同程序的麻烦,给出错误消息,在 @INC 中无法找到 File/Slurp.pm。这发生在更换计算机并且必须重新安装不同的东西并更改为 anaconda3 之后。例如,我在尝试启动 abricate 时收到以下错误消息:
Can't locate File/Slurp.pm in @INC (you may need to install the File::Slurp module)
(@INC contains: /anaconda3/lib/perl5/site_perl/5.22.0/darwin-thread-multi-2level /anaconda3/lib/perl5/site_perl/5.22.0 /anaconda3/lib/perl5/5.22.0/darwin-thread-multi-2level /anaconda3/lib/perl5/5.22.0 .) at /anaconda3/bin/abricate line 9.
BEGIN failed--compilation aborted at /anaconda3/bin/abricate line 9.
当我在我的计算机上搜索安装时,它已经存在于多个位置(其中一些是空的?):
- /anaconda3/pkgs/perl-file-slurp-9999.25-pl526_0/lib/site_perl/5.26.2/darwin-thread-multi-2level/auto/File/Slurp
- /anaconda3/pkgs/perl-file-slurp-tiny-0.004-pl526_1/lib/site_perl/5.26.2/File/Slurp
- /anaconda3/pkgs/perl-file-slurp-tiny-0.004-pl526_1/lib/site_perl/5.26.2/darwin-thread-multi-2level/auto/File/Slurp
- /anaconda3/lib/site_perl/5.26.2/darwin-thread-multi-2level/auto/File/Slurp
- /anaconda3/lib/site_perl/5.26.2/File/Slurp
我尝试重新安装 slurp 模块
conda install -c bioconda perl-file-slurp
但这并没有帮助。
我试图进一步了解how the @INC is build up。
但是我对它如何与 conda 安装的程序一起工作感到困惑。当我查看 perl 环境时,与为 @INC 指定不同文件夹的错误消息相比,我得到了不同的位置。
$ env -i perl -V
Summary of my perl5 (revision 5 version 18 subversion 2) configuration:
Platform:
osname=darwin, osvers=18.0, archname=darwin-thread-multi-2level
uname='darwin osx337.sd.apple.com 18.0 darwin kernel version 17.0.0: fri may 4 10:33:38 pdt 2018; root:xnu-4570.1.46.100.2~1development_x86_64 x86_64 '
config_args='-ds -e -Dprefix=/usr -Dccflags=-g -pipe -Dldflags= -Dman3ext=3pm -Duseithreads -Duseshrplib -Dinc_version_list=none -Dcc=cc'
hint=recommended, useposix=true, d_sigaction=define
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=define, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags =' -g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -fstack-protector',
optimize='-Os',
cppflags='-g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -fstack-protector'
ccversion='', gccversion='4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)', gccosandvers=''
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -fstack-protector'
libpth=/usr/lib /usr/local/lib
libs=
perllibs=
libc=, so=dylib, useshrplib=true, libperl=libperl.dylib
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -fstack-protector'
Characteristics of this binary (from libperl):
Compile-time options: HAS_TIMES MULTIPLICITY PERLIO_LAYERS
PERL_DONT_CREATE_GVSV
PERL_HASH_FUNC_ONE_AT_A_TIME_HARD
PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
PERL_PRESERVE_IVUV PERL_SAWAMPERSAND USE_64_BIT_ALL
USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES
USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE
USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
USE_REENTRANT_API
Locally applied patches:
/Library/Perl/Updates/<version> comes before system perl directories
installprivlib and installarchlib points to the Updates directory
Built under darwin
Compiled at Aug 17 2018 17:29:08
@INC:
/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
/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
.
我的路径如下:
$ echo $PATH
/anaconda3/bin:/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/ncbi/blast/bin:/opt/X11/bin
我相信也可以通过向程序本身添加东西来改变环境
use lib '/anaconda3/lib/site_perl/5.26.2/darwin-thread-multi-2level';
但是由于我有多个程序的问题,我想了解核心问题是什么(除了我对此相当陌生...:)
看来你的系统搞砸了。
如果我正确地解释了消息,那么您至少安装了三种不同的 Perl:
- 5.18.2 来自您的 macOS Mojave (?
osvers=18.0
) 安装
- 来自 anaconda3 的 5.22.0
- 来自 anaconda3 的 5.26.2???? (或者只有包,而不是 perl 二进制文件本身)
env -i CMD
以空环境启动 CMD
,因此它将删除您可能已配置的任何内容。所以 env -i perl -V
会在你的系统中找到 "default" perl,这是 /usr/bin/perl
.
中 macOS Mojave 安装的那个
但是 perl 不会导致错误消息,所以我们可以忽略它。
当您执行 conda ...
时,它似乎使用了来自 /anaconda3
的 perl 5.22.0。但同时你已经在那个环境中安装了 perl 5.26.2。我有根据的猜测是:
- 您的 Anaconda 3 perl 包失败了 install/update,即它已经安装了 5.26.2 包,但没有安装二进制文件,并且完整地保留了旧的 perl 5.22.0 二进制文件。
- 您没有为不同的
conda install
运行使用相同的频道(您的问题表明您想使用 "bioconda" 频道?)
因此,您应该尝试的第一件事是在与 运行 conda
相同的终端中:
$ which perl
$ perl -V
如何解决这个问题?以下是我会尝试的事情:
- 尝试用
conda update -c bioconda perl
更新 Anaconda 3 perl 包
- 尝试删除并重新安装 Anaconda3 perl 包
conda remove -c bioconda perl
和 conda install -c bioconda perl
- 极端方法:从头开始删除并重新安装 Anaconda 3,即
rm -rf /anaconda3
,从 ~/.bashrc
中删除 PATH
添加项,然后关闭终端。
我开始遇到使用 conda ('abricate'、'mlst') 安装的不同程序的麻烦,给出错误消息,在 @INC 中无法找到 File/Slurp.pm。这发生在更换计算机并且必须重新安装不同的东西并更改为 anaconda3 之后。例如,我在尝试启动 abricate 时收到以下错误消息:
Can't locate File/Slurp.pm in @INC (you may need to install the File::Slurp module)
(@INC contains: /anaconda3/lib/perl5/site_perl/5.22.0/darwin-thread-multi-2level /anaconda3/lib/perl5/site_perl/5.22.0 /anaconda3/lib/perl5/5.22.0/darwin-thread-multi-2level /anaconda3/lib/perl5/5.22.0 .) at /anaconda3/bin/abricate line 9.
BEGIN failed--compilation aborted at /anaconda3/bin/abricate line 9.
当我在我的计算机上搜索安装时,它已经存在于多个位置(其中一些是空的?):
- /anaconda3/pkgs/perl-file-slurp-9999.25-pl526_0/lib/site_perl/5.26.2/darwin-thread-multi-2level/auto/File/Slurp
- /anaconda3/pkgs/perl-file-slurp-tiny-0.004-pl526_1/lib/site_perl/5.26.2/File/Slurp
- /anaconda3/pkgs/perl-file-slurp-tiny-0.004-pl526_1/lib/site_perl/5.26.2/darwin-thread-multi-2level/auto/File/Slurp
- /anaconda3/lib/site_perl/5.26.2/darwin-thread-multi-2level/auto/File/Slurp
- /anaconda3/lib/site_perl/5.26.2/File/Slurp
我尝试重新安装 slurp 模块
conda install -c bioconda perl-file-slurp
但这并没有帮助。
我试图进一步了解how the @INC is build up。 但是我对它如何与 conda 安装的程序一起工作感到困惑。当我查看 perl 环境时,与为 @INC 指定不同文件夹的错误消息相比,我得到了不同的位置。
$ env -i perl -V
Summary of my perl5 (revision 5 version 18 subversion 2) configuration:
Platform:
osname=darwin, osvers=18.0, archname=darwin-thread-multi-2level
uname='darwin osx337.sd.apple.com 18.0 darwin kernel version 17.0.0: fri may 4 10:33:38 pdt 2018; root:xnu-4570.1.46.100.2~1development_x86_64 x86_64 '
config_args='-ds -e -Dprefix=/usr -Dccflags=-g -pipe -Dldflags= -Dman3ext=3pm -Duseithreads -Duseshrplib -Dinc_version_list=none -Dcc=cc'
hint=recommended, useposix=true, d_sigaction=define
useithreads=define, usemultiplicity=define
useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
use64bitint=define, use64bitall=define, uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cc', ccflags =' -g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -fstack-protector',
optimize='-Os',
cppflags='-g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -fstack-protector'
ccversion='', gccversion='4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)', gccosandvers=''
intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -fstack-protector'
libpth=/usr/lib /usr/local/lib
libs=
perllibs=
libc=, so=dylib, useshrplib=true, libperl=libperl.dylib
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -fstack-protector'
Characteristics of this binary (from libperl):
Compile-time options: HAS_TIMES MULTIPLICITY PERLIO_LAYERS
PERL_DONT_CREATE_GVSV
PERL_HASH_FUNC_ONE_AT_A_TIME_HARD
PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
PERL_PRESERVE_IVUV PERL_SAWAMPERSAND USE_64_BIT_ALL
USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES
USE_LOCALE USE_LOCALE_COLLATE USE_LOCALE_CTYPE
USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
USE_REENTRANT_API
Locally applied patches:
/Library/Perl/Updates/<version> comes before system perl directories
installprivlib and installarchlib points to the Updates directory
Built under darwin
Compiled at Aug 17 2018 17:29:08
@INC:
/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
/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
.
我的路径如下:
$ echo $PATH
/anaconda3/bin:/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/ncbi/blast/bin:/opt/X11/bin
我相信也可以通过向程序本身添加东西来改变环境
use lib '/anaconda3/lib/site_perl/5.26.2/darwin-thread-multi-2level';
但是由于我有多个程序的问题,我想了解核心问题是什么(除了我对此相当陌生...:)
看来你的系统搞砸了。
如果我正确地解释了消息,那么您至少安装了三种不同的 Perl:
- 5.18.2 来自您的 macOS Mojave (?
osvers=18.0
) 安装 - 来自 anaconda3 的 5.22.0
- 来自 anaconda3 的 5.26.2???? (或者只有包,而不是 perl 二进制文件本身)
env -i CMD
以空环境启动 CMD
,因此它将删除您可能已配置的任何内容。所以 env -i perl -V
会在你的系统中找到 "default" perl,这是 /usr/bin/perl
.
但是 perl 不会导致错误消息,所以我们可以忽略它。
当您执行 conda ...
时,它似乎使用了来自 /anaconda3
的 perl 5.22.0。但同时你已经在那个环境中安装了 perl 5.26.2。我有根据的猜测是:
- 您的 Anaconda 3 perl 包失败了 install/update,即它已经安装了 5.26.2 包,但没有安装二进制文件,并且完整地保留了旧的 perl 5.22.0 二进制文件。
- 您没有为不同的
conda install
运行使用相同的频道(您的问题表明您想使用 "bioconda" 频道?)
因此,您应该尝试的第一件事是在与 运行 conda
相同的终端中:
$ which perl
$ perl -V
如何解决这个问题?以下是我会尝试的事情:
- 尝试用
conda update -c bioconda perl
更新 Anaconda 3 perl 包
- 尝试删除并重新安装 Anaconda3 perl 包
conda remove -c bioconda perl
和conda install -c bioconda perl
- 极端方法:从头开始删除并重新安装 Anaconda 3,即
rm -rf /anaconda3
,从~/.bashrc
中删除PATH
添加项,然后关闭终端。