我需要用新的模块版本测试我的项目。 但是由于某种原因,Perl 无法加载它。
docker-compose run -v /data/projects/My-Module:/perl5lib project-container perl -I/perl5lib -MMy::Module -e 'print $INC{"My/Module.pm"}'
它必须打印
/perl5lib
但实际上它打印
/usr/local/share/perl/5.26.1/My/Module.pm
与
docker-compose run -e PERL5LIB=/perl5lib -v /data/projects/My-Module:/perl5lib project-container perl -MMy::Module -e 'print $INC{"My/Module.pm"}'
请帮助我找到可能的问题。
$ perl --version
This is perl 5, version 26, subversion 1 (v5.26.1) built for x86_64-linux-gnu-thread-multi
$ docker-compose --version
docker-compose version 1.24.1, build 4667896
使用此命令(它应该或多或少等同于您正在执行的操作(
docker run perl:5.28 perl -I/xyz -V
无论容器实例中是否存在/xyz
,我都可以直观地确认/xyz
是@INC
的第一个条目:
...
Compiled at Aug 15 2019 02:34:38
@INC:
/xyz
/usr/local/lib/perl5/site_perl/5.28.2/x86_64-linux-gnu
/usr/local/lib/perl5/site_perl/5.28.2
/usr/local/lib/perl5/vendor_perl/5.28.2/x86_64-linux-gnu
/usr/local/lib/perl5/vendor_perl/5.28.2
/usr/local/lib/perl5/5.28.2/x86_64-linux-gnu
/usr/local/lib/perl5/5.28.2
鉴于您的消息My/Module.pm
需要从另一个地方,我猜你的/perl5lib
是空的,或者根本不包含My/Module.pm
- 或者以某种方式,替代路径首先出现,然后是你的/perl5lib
。不确定情况如何,但我试图列举一些可能性。
无论如何,您应该能够通过运行来检查/perl5lib
的内容
docker-compose run -v /data/projects/My-Module:/perl5lib project-container find /perl5lib
(我想find
命令在您的容器中可用,但如果没有,请尝试ls -R
或类似的东西......
最后。。。如果您在macOS上使用Docker(我无法从您提供的信息中看出(,则需要验证/data/projects/My-Module
是否在"文件共享"首选项列表中。否则,无法装入该文件夹。