#perl #strawberry-perl
#perl #strawberry-perl
Вопрос:
Некоторое время я успешно запускал perl-скрипт из python. Я только что перенес все на новый компьютер (оба работают под управлением Windows 10), и у меня возникли проблемы.
При запуске скрипта я получаю сообщение об ошибке:
Can't locate DBI.pm in @INC (you may need to install the DBI module) (@INC contains: /usr/lib/perl5/site_perl /usr/share/perl5/site_perl /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5/core_perl /usr/share/perl5/core_perl)
В первой строке use DBI;
.
Я перешел к использованию Perl (command line)
, выбрал папку со скриптом и запустил perl <filename>
— та же ошибка.
DBI
кажется, что он установлен правильно в C:Strawberryperlvendorlib
, и этот каталог находится в моем, @INC
когда я проверяю через perl -V
:
@INC:
C:/Strawberry/perl/site/lib
C:/Strawberry/perl/vendor/lib
C:/Strawberry/perl/lib
Я DBI
снова попытался установить, используя cpan Module::DBI
, но получаю сообщение об ошибке:
Could not expand [Module::DBI]. Check the module name.
Я пытался установить его с помощью perl -MCPAN -e "install Bundle::DBI"
, но это не удается с помощью:
Test Summary Report
-------------------
t/original.t (Wstat: 0 Tests: 27 Failed: 1)
Failed test: 26
Files=1, Tests=27, 1 wallclock secs ( 0.05 usr 0.01 sys = 0.06 CPU)
Result: FAIL
Failed 1/1 test programs. 1/27 subtests failed.
gmake: *** [Makefile:863: test_dynamic] Error 255
NEILB/IO-Tee-0.65.tar.gz
C:STRAWB~1cbingmake.exe test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
reports NEILB/IO-Tee-0.65.tar.gz
Stopping: 'install' failed for 'IO::Tee'.
У меня не возникло никаких проблем при настройке на моем предыдущем компьютере (оба раза это была обычная установка без импорта дополнительных модулей).
Я пытался переустановить Strawberry пару раз, но безрезультатно. Я пытался установить perlbrew и ActivePerl, но с обоими из них возникли проблемы. Я также теперь исчерпал Google для поиска потенциальных решений.
Есть идеи?
Редактировать:
Следуя приведенному здесь совету, я запустил, perl -e "use DBI;"
и нет сообщения об ошибке, что, по-видимому, означает, что DBI
модуль установлен правильно?
Правка 2
Хорошо, итак, мне удалось наладить работу через Perl (command line)
, а также через Windows cmd
— потребовалась полная переустановка MySQL, что на самом деле не имеет никакого смысла, но в любом случае. Однако я все еще не могу выполнить скрипт с помощью Git Bash
. Я получаю ту же ошибку, что и всегда…
Комментарии:
1. Повторите » Я попытался установить DBI снова с помощью
cpan Module::DBI
«, Да, это потому, что такого модуля нет. Чтобы установить DBI, вы хотитеcpan DBI
. Существует также псевдомодуль с именем Bundle::DBI, который имеет DBI и другие модули в качестве зависимостей, в результате чего все они должны быть установлены. Это то, что вы в конечном итоге пытались установить, используя вторую команду.2. Повторно » Следуя приведенному здесь совету, я запустил perl -e «использовать DBI;» и нет сообщения об ошибке, которое, по-видимому, означает, что DBI установлен правильно? » да, для этого
perl
3. Повторно » Однако я все еще не могу выполнить скрипт, используя Git Bash. «, Вероятно, потому, что вы используете
perl
созданную для этой среды эмуляции unix вместо сборки Strawberry Perl, для которой вы установили модуль4. Привет. У меня определенно есть только одна установка Perl, и это Strawberry — я удалил ActiveState и perlbrew
5. Нет. Когда вы устанавливали git, вы устанавливали целую среду эмуляции unix, которая включает bash, perl и другие инструменты, необходимые git.
Ответ №1:
[ Обновление: исправлена ошибка в IO-Tee 0.66. ]
Неудачный тест предполагает, что он sysread
подчиняется :crlf
слою, который добавлен к дескрипторам файлов в Windows. Но это не так. Это плохой тест, а не проблема с модулем. Таким образом, поскольку это единственный неудачный тест, вы можете безопасно принудительно установить модуль, используя следующее:
cpan -f IO::Tee
Принудительная установка модуля с неудачными тестами обычно является плохой идеей, потому что это означает, что вы принудительно устанавливаете модуль, который, вероятно, сломан. Но здесь все в порядке, потому что было установлено, что проблема связана с тестом, а не с самим модулем.
Я отправил отчет об ошибке с более подробным объяснением проблемы и решения.
Комментарии:
1. Спасибо за ответ. Я установил
DBI
с помощью описанного выше метода, и он обновился до1.643
. Все то же самоеCan't locate
… сообщение об ошибке. Запускалcpan -f IO::Tee
— снова сбой и не имеет никакого значения дляCan't locate
… ошибка: (Не уверен, что это актуально, но я добавил остальную часть сообщения об ошибке, которое я получаю выше — ссылки на каталог выглядят странно, но, похоже, в целом совпадают?2. Я не думаю, что это правда.
cpan -f
по-прежнему покажет неудачный тест, но, тем не менее, установит модуль. Как только этот модуль установлен, вам нужно снова запуститьcpan DBI
илиcpan Bundle::DBI
. Если у вас есть другие проблемы, это для другого вопроса (поскольку мы ничего о них не знаем)3. Ошибка была исправлена в последней версии.