Как исправить Perl из анаконды, не устанавливающей Bioperl? `Спасение установки для BioPerl-1.007002.`

Я использую conda для установки нескольких пакетов. Я уже установил Perl под conda, и он работает на этой машине (под управлением Ubuntu 18.04). Сейчас я пытаюсь использовать скрипт, требующий bioperl.

Я попытался обновить conda, установить bioperl через conda И установить bioperl через cpanm, как показано ниже.

Я проверил, что используемый в настоящее время Perl - это анаконда. Шебанг в скрипте perl - #!/home/evo-slave/anaconda_ete/bin/perl -w

Это начальная ошибка при запуске скрипта.

    Can't locate Bio/SeqIO.pm in @INC (you may need to install the 
    Bio::SeqIO module) (@INC contains: /home/evo- 
    slave/anaconda_ete/lib/site_perl/5.26.2/x86_64-linux-thread-multi 
    /home/evo-slave/anaconda_ete/lib/site_perl/5.26.2 /home/evo- 
    slave/anaconda_ete/lib/5.26.2/x86_64-linux-thread-multi /home/evo- 
    slave/anaconda_ete/lib/5.26.2 .) at ./cortador.pl line 9.
    BEGIN failed--compilation aborted at ./cortador.pl line 9.

Я не знаю, связана ли это с тем, что bioperl не вызывается / не устанавливается с помощью anaconda perl или во время выполнения сценария, возможно, эти строки в сценарии должны указывать на что-то еще

    use File::Basename;
    use Bio::SeqIO;
    use Bio::Seq;
    use Bio::DB::SeqFeature::Store;
    use Bio::SeqFeatureI;

Когда я пытаюсь установить

    cpanm Bio::Perl

Я получил эту ошибку

    --> Working on Bio::Perl
    Fetching http://www.cpan.org/authors/id/C/CJ/CJFIELDS/BioPerl- 
    1.007002.tar.gz ... OK
    Configuring BioPerl-1.007002 ... OK
    ==> Found dependencies: IO::String, Data::Stag, Test::Most
    --> Working on IO::String
    Fetching http://www.cpan.org/authors/id/G/GA/GAAS/IO-String-

    1.08.tar.gz ... OK
    Configuring IO-String-1.08 ... OK
    Building and testing IO-String-1.08 ... OK
    Successfully installed IO-String-1.08
    --> Working on Data::Stag
    Fetching http://www.cpan.org/authors/id/C/CM/CMUNGALL/Data-Stag- 
    0.14.tar.gz ... OK
    Configuring Data-Stag-0.14 ... OK
    ==> Found dependencies: IO::String
    ! Installing the dependencies failed: Module 'IO::String' is not 
    installed
    ! Bailing out the installation for Data-Stag-0.14.
    --> Working on Test::Most
    Fetching http://www.cpan.org/authors/id/O/OV/OVID/Test-Most- 
    0.35.tar.gz ... OK
    Configuring Test-Most-0.35 ... OK
    ==> Found dependencies: Test::Warn, Test::Deep, Test::Differences, 
    Test::Exception, Exception::Class
    --> Working on Test::Warn
    Fetching http://www.cpan.org/authors/id/B/BI/BIGJ/Test-Warn- 
    0.36.tar.gz ... OK
    Configuring Test-Warn-0.36 ... OK
    ==> Found dependencies: Sub::Uplevel
    --> Working on Sub::Uplevel
    Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Sub-Uplevel- 
    0.2800.tar.gz ... OK
    Configuring Sub-Uplevel-0.2800 ... OK
    Building and testing Sub-Uplevel-0.2800 ... OK
    Successfully installed Sub-Uplevel-0.2800
    ! Installing the dependencies failed: Module 'Sub::Uplevel' is not 
    installed
    ! Bailing out the installation for Test-Warn-0.36.
    --> Working on Test::Deep
    Fetching http://www.cpan.org/authors/id/R/RJ/RJBS/Test-Deep- 
    1.128.tar.gz ... OK
    Configuring Test-Deep-1.128 ... OK
    Building and testing Test-Deep-1.128 ... OK
    Successfully installed Test-Deep-1.128
    --> Working on Test::Differences
    Fetching http://www.cpan.org/authors/id/D/DC/DCANTRELL/Test- 
    Differences-0.67.tar.gz ... OK
    Configuring Test-Differences-0.67 ... OK
    ==> Found dependencies: Capture::Tiny, Text::Diff
    --> Working on Capture::Tiny
    Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Capture- 
    Tiny-0.48.tar.gz ... OK
    Configuring Capture-Tiny-0.48 ... OK
    Building and testing Capture-Tiny-0.48 ... OK
    Successfully installed Capture-Tiny-0.48
    --> Working on Text::Diff
    Fetching http://www.cpan.org/authors/id/N/NE/NEILB/Text-Diff- 
    1.45.tar.gz ... OK
    Configuring Text-Diff-1.45 ... OK
    ==> Found dependencies: Algorithm::Diff
    --> Working on Algorithm::Diff
    Fetching http://www.cpan.org/authors/id/T/TY/TYEMQ/Algorithm-Diff- 
    1.1903.tar.gz ... OK
    Configuring Algorithm-Diff-1.1903 ... OK
    Building and testing Algorithm-Diff-1.1903 ... OK
    Successfully installed Algorithm-Diff-1.1903
    ! Installing the dependencies failed: Module 'Algorithm::Diff' is 
     not installed
    ! Bailing out the installation for Text-Diff-1.45.
    ! Installing the dependencies failed: Module 'Text::Diff' is not 
    installed, Module 'Capture::Tiny' is not installed
    ! Bailing out the installation for Test-Differences-0.67.
    --> Working on Test::Exception
    Fetching http://www.cpan.org/authors/id/E/EX/EXODIST/Test- 
    Exception-0.43.tar.gz ... OK
    Configuring Test-Exception-0.43 ... OK
    ==> Found dependencies: Sub::Uplevel
    ! Installing the dependencies failed: Module 'Sub::Uplevel' is not 
    installed
    ! Bailing out the installation for Test-Exception-0.43.
    --> Working on Exception::Class
    Fetching http://www.cpan.org/authors/id/D/DR/DROLSKY/Exception- 
    Class-1.44.tar.gz ... OK
    Configuring Exception-Class-1.44 ... OK
    ==> Found dependencies: Class::Data::Inheritable
    --> Working on Class::Data::Inheritable
    Fetching http://www.cpan.org/authors/id/T/TM/TMTM/Class-Data- 
    Inheritable-0.08.tar.gz ... OK
    Configuring Class-Data-Inheritable-0.08 ... OK
    Building and testing Class-Data-Inheritable-0.08 ... OK
    Successfully installed Class-Data-Inheritable-0.08
    ! Installing the dependencies failed: Module 
    'Class::Data::Inheritable' is not installed
    ! Bailing out the installation for Exception-Class-1.44.
    ! Installing the dependencies failed: Module 'Test::Exception' is 
    not installed, Module 'Test::Differences' is not installed, Module 
    'Exception::Class' is not installed, Module 'Test::Warn' is not 
    installed, Module 'Test::Deep' is not installed
    ! Bailing out the installation for Test-Most-0.35.
    ! Installing the dependencies failed: Module 'Test::Most' is not 
    installed, Module 'IO::String' is not installed, Module 
    'Data::Stag' 
    is not installed
    ! Bailing out the installation for BioPerl-1.007002.
    6 distributions installed

ETA: похоже, что-то не так, и зависимости требуемых модулей не устанавливаются во время простого cpanm Пример раунда, пытающегося установить все, что необходимо


    cpanm Sub::Uplevel

    --> Working on Sub::Uplevel
    Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Sub-Uplevel-0.2800.tar.gz ... OK
    Configuring Sub-Uplevel-0.2800 ... OK
    Building and testing Sub-Uplevel-0.2800 ... OK
    Successfully installed Sub-Uplevel-0.2800
    1 distribution installed

затем

    cpanm Test::Warn

    --> Working on Test::Warn
    Fetching http://www.cpan.org/authors/id/B/BI/BIGJ/Test-Warn-0.36.tar.gz ... OK
    Configuring Test-Warn-0.36 ... OK
    ==> Found dependencies: Sub::Uplevel
    --> Working on Sub::Uplevel
    Fetching http://www.cpan.org/authors/id/D/DA/DAGOLDEN/Sub-Uplevel-0.2800.tar.gz ... OK
    Configuring Sub-Uplevel-0.2800 ... OK
    Building and testing Sub-Uplevel-0.2800 ... OK
    Successfully installed Sub-Uplevel-0.2800
    ! Installing the dependencies failed: Module 'Sub::Uplevel' is not installed
    ! Bailing out the installation for Test-Warn-0.36.
    1 distribution installed

Некоторая информация для помощи в отладке:

$ set | grep ^PERL
PERL5LIB=:/media/evo-slave/Disco2/ANDRES/DOWNLOADS/GENOME/CAV-POC/GAAS/annotation
PERL_MB_OPT='--install_base "/home/evo-slave/perl5"'
PERL_MM_OPT=INSTALL_BASE=/home/evo-slave/perl5

$ which cpanm
/home/evo-slave/anaconda_ete/bin/cpanm

$ head -n 1 "$( which cpanm )"
#!/home/evo-slave/anaconda_ete/bin/perl

person Andrés Parada    schedule 08.10.2019    source источник
comment
Похоже, первая неудача - для IO::String. Попробуйте сначала установить IO::String самостоятельно: cpanm IO::String. Какие ошибки вы получаете?   -  person Håkon Hægland    schedule 08.10.2019
comment
Я попробовал установить Bio::Perl на свой ноутбук сейчас (Ubuntu 19.04, perl версии 5.28.1), и он установился нормально с cpanm   -  person Håkon Hægland    schedule 08.10.2019
comment
@ HåkonHægland Я пробовал это, и теперь требуется другая зависимость, я устанавливаю одну за другой. Это нормально или что-то не так, что cpanm не может найти зависимости и установить себя без конфликтов? Мне пришлось вручную установить Capture :: Tiny, Text: Differences и т. Д.   -  person Andrés Parada    schedule 08.10.2019
comment
Нет, я не думаю, что это нормально, но иногда со мной такое случалось. Может быть, некоторые из модулей не смогли представить свои реквизиты таким образом, чтобы cpanm мог их прочитать? Просто предположение   -  person Håkon Hægland    schedule 08.10.2019
comment
Я думаю, вы устанавливаете модули в нестандартное место и не сказали Perl искать там модули. Какой результат set | grep ^PERL ; which cpanm ; head -n 1 "$( which cpanm )"   -  person ikegami    schedule 08.10.2019
comment
@ikegami (base) evo-slave@evo-slave:~$ set | grep ^PERL PERL5LIB=:/media/evo-slave/Disco2/ANDRES/DOWNLOADS/GENOME/CAV-POC/GAAS/annotation PERL_MB_OPT='--install_base "/home/evo-slave/perl5"' PERL_MM_OPT=INSTALL_BASE=/home/evo-slave/perl5 (base) evo-slave@evo-slave:~$ which cpanm /home/evo-slave/anaconda_ete/bin/cpanm (base) evo-slave@evo-slave:~$ head -n 1 "$( which cpanm )" #!/home/evo-slave/anaconda_ete/bin/perl   -  person Andrés Parada    schedule 08.10.2019
comment
Да, я был прав. /home/evo-slave/perl5/<something> должен быть в PERL5LIB. Но не уверен, что такое <something>. Судя по начальному :, я подозреваю, что правильное значение было в PERL5LIB, но оно случайно сбилось, когда было добавлено /media/evo-slave/Disco2/ANDRES/DOWNLOADS/GENOME/CAV-POC/GAAS/annotation. Дважды проверьте утверждение, добавляющее это к PERL5LIB. У вас export PERL5LIB=$TYPO:/media/... вместо export PERL5LIB=$PERL5LIB:/media/...?   -  person ikegami    schedule 08.10.2019


Ответы (1)


Я публикую это как ответ не потому, что это хорошая идея, а потому, что в нем содержится больше информации. Я работаю над Amazon Linux, поэтому он немного отличается, но также сталкиваюсь с проблемами с зависимостями bioperl, установленными через conda. В моем случае я пытаюсь запустить VirSorter, который упоминает эту проблему и предлагает решение, которое не работает для меня, но предлагает подтвердить, что ваш PERL5LIB настроен правильно.

Я заметил, что мой perl - 5.26.2:

$ perl --version

This is perl 5, version 26, subversion 2 (v5.26.2) built for x86_64-linux-thread-multi

Но conda по какой-то непонятной причине устанавливает мои зависимости perl для 5.22.0: /home/ec2-user/anaconda3/envs/virsorter/lib/perl5/site_perl/5.22.0/:

$ ls /home/ec2-user/anaconda3/envs/virsorter/lib/perl5/site_perl/5.22.0/
Algorithm  Bio  Capture  Class  Data  Devel  Exception  IO  Sub  Test  Text  URI  URI.pm  x86_64-linux-thread-multi

Я обнаружил, что могу запустить VirSorter, по-видимому, успешно, просто установив PERL5LIB в библиотеку 5.22.0 под conda:

OLD_PER5LIB=$PERL5LIB
export PERL5LIB=/home/ec2-user/anaconda3/envs/virsorter/lib/perl5/site_perl/5.22.0/
# run virsorter
# no errors!

Я уверен, что это подбрасывает множество красных флажков для разработчиков Perl, и я уверен, что это очень хрупко, если оно вообще работает. Возможно, вопрос в том, почему conda устанавливает модули perl как неправильную версию perl?

person Maximilian Press    schedule 01.06.2020
comment
Спасибо за ответ, у меня нет этой машины с установочным банкоматом, надеюсь, это можно будет исправить в будущем и для других пользователей. - person Andrés Parada; 02.06.2020
comment
@ AndrésParada Agreed - возможно, вы сможете использовать тесно связанное решение, предложенное авторами VirSort для Ubuntu здесь: github.com/simroux/VirSorter/#note-for-conda-installation. Примерно export PERL5LIB=pwd/../../../lib/site_perl/5.26.2/. У меня это не сработало, поскольку мой site_perl был другим, возможно, из-за дистрибутива linux. - person Maximilian Press; 02.06.2020