Не удается найти файл / Slurp.pm в @INC в установленной программой conda - PullRequest
0 голосов
/ 23 февраля 2019

У меня начались проблемы с различными программами, установленными с использованием conda ('abricate', 'mlst'), выдающими сообщения об ошибках с сообщением Can't locate File / Slurp.pm в @INC.Это произошло после смены компьютеров, переустановки разных вещей и перехода на 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 / Файл / Slurp

Я попытался переустановить модуль slurp

conda install -c bioconda perl-file-slurp

, но это не помоглонет помощи.

Я попытался понять , как создается @INC .Но я не совсем понимаю, как это работает с установленными программами 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';

, но, поскольку у меня проблема с несколькими программами, я бы хотел понять, в чем заключается основная проблема (за исключением того, что я довольноновичок в этом ...:)

1 Ответ

0 голосов
/ 23 февраля 2019

Похоже, что вы испортили вашу систему.

Если я правильно интерпретирую сообщения, у вас есть по крайней мере три различных установки Perl:

  • 5.18.2 из вашей MacOS Mojave(? osvers=18.0) установка
  • 5.22.0 от anaconda3
  • 5.26.2 от anaconda3 ????(или только пакеты, но не сам бинарный файл perl)

env -i CMD запускает CMD с пустой средой, поэтому он удалит все, что вы могли настроить.Так что env -i perl -V найдет в вашей системе perl «по умолчанию», который установлен в MacOS Mojave в /usr/bin/perl.

Но этот perl не вызывает сообщение об ошибке, поэтому мы можем игнорироватьit.


Когда вы выполняете conda ..., кажется, используется perl 5.22.0 из /anaconda3.Но в то же время вы установили Perl 5.26.2 в этой среде.Мое обоснованное предположение будет таким:

  • у вас произошла неудачная установка / обновление пакета Perl Anaconda 3, то есть он уже установил пакеты 5.26.2, но не бинарный и оставил старый perl 5.22.0бинарный нетронут.
  • вы не использовали один и тот же канал для разных conda install прогонов (ваш вопрос указывает на то, что вы хотите использовать канал "bioconda"?)

Итак,Первое, что вы должны попробовать - это в том же терминале, в котором вы запускали conda in:

$ which perl
$ perl -V

Как это исправить?Вот что я бы попробовал:

  • Попробуйте обновить пакет Perl Anaconda 3 с conda update -c bioconda perl
  • Попробуйте удалить и переустановить пакет Perl Anaconda3 conda remove -c bioconda perl и conda install -c bioconda perl
  • Радикальный подход: удалить и переустановить Anaconda 3 с нуля, то есть rm -rf /anaconda3, удалить PATH дополнения из ~/.bashrc и затем закрыть терминал.
...