【问题标题】:Can't locate File/Slurp.pm in @INC in a conda installed program无法在 conda 安装程序的 @INC 中找到 File/Slurp.pm
【发布时间】:2019-07-17 02:22:09
【问题描述】:

我开始遇到使用 conda ('abricate', 'mlst') 安装的不同程序的麻烦,并在 @INC 中提供错误消息,并显示 Can't locate 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';

但由于我有多个程序的问题,我想了解核心问题是什么(除了我对此很陌生......:)

【问题讨论】:

  • 您似乎(至少)安装了 3 次 Perl:5.18.2(路径中的第一个)、5.22(由给出错误的程序使用)和 5.26.2(具有File::Slurp 已安装,假设 /anaconda3/lib/site_perl/5.26.2/File/Slurp 真的是 /anaconda3/lib/site_perl/5.26.2/File/Slurp.pm)
  • 您是否忘记source anaconda3 安装文件?如果我正确解释上述内容,anaconda3 会安装自己的 Perl 安装(5.26.2),那么在您使用 anaconda3 的那些终端中,它需要在 $PATH 中排在第一位。
  • @ikegami ,大部分文件都是由 conda 自己安装的。如果我删除某些文件会有帮助吗? (我担心它也会使其他程序停止......但如果它可能有帮助我会很乐意尝试)
  • @Stefan Becker,我会将我的路径添加到帖子中。它有来自anaconda3的某些文件夹,但我应该添加哪个perl文件夹?
  • 我无法提供任何建议。我只是指出了一些可能对您或其他人有所帮助的信息

标签: perl conda perl-module


【解决方案1】:

看来你的系统搞砸了。

如果我正确解释了这些消息,您至少安装了三个不同的 Perl:

  • 5.18.2 来自您的 macOS Mojave (?osvers=18.0) 安装
  • 来自 anaconda3 的 5.22.0
  • 5.26.2 来自 anaconda3???? (或者只有包,而不是 perl 二进制文件本身)

env -i CMD 以空环境启动 CMD,因此它将删除您可能已配置的任何内容。所以env -i perl -V 会在你的系统中找到“默认”perl,它是来自/usr/bin/perl 中的macOS Mojave 安装的那个。

但是那个 perl 不会导致错误信息,所以我们可以忽略它。


当您执行conda ... 时,它似乎使用来自/anaconda3 的perl 5.22.0。但同时你已经在那个环境中安装了 perl 5.26.2。我有根据的猜测是:

  • Anaconda 3 perl 软件包的安装/更新失败,即它已安装 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 perlconda install -c bioconda perl
  • 激进的方法:从头开始删除并重新安装 Anaconda 3,即 rm -rf /anaconda3,从 ~/.bashrc 中删除 PATH 添加,然后关闭终端。

【讨论】:

  • 非常感谢您带我一步一步完成。 (我完全同意诊断:系统混乱)。修复的是使用“conda remove -c bioconda perl”删除 perl 包,这样就成功了。无需重新安装!因此,再次非常感谢您为我付出的时间和精力。它使我能够再次回到我的博士学位。谢谢!
猜你喜欢
  • 2021-11-17
  • 1970-01-01
  • 2017-06-08
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多