环境模块找不到已安装的模块

环境模块找不到已安装的模块

我正在尝试在 Google Colab(Ubuntu 环境)中安装和加载几个 Perl 模块。我使用 CPAN 安装它们,然后使用环境模块。我绝对需要使用环境模块来加载它们(例如,我的脚本运行的命令之一是module load Perl),但如果有更好的选择,我不需要使用 CPAN 来安装它们。

首先我使用 CPAN 安装了 Perl 模块:

PERL_MM_USE_DEFAULT=1 cpan GD ExtUtils::PkgConfig DBI DBD::mysql DBD::SQLite Capture::Tiny Exporter Log::Message::Simple Getopt::Long \
     List::Util List::MoreUtils IO::File XML::Writer XML::LibXML XML::Parser XML::LibXML::Reader \
     Data::Dumper File::Slurp JSON Storable Scalar::Util Array::Utils Config::IniFiles \
     Statistics::Descriptive GD::Graph::boxplot

然后,跑步perldoc perllocal给了我以下收获:

Tue Jul 28 01:16:13 2020: "Module" App::cpanminus
    *   "installed into: /usr/local/share/perl/5.26.1"

    *   "LINKTYPE: dynamic"

    *   "VERSION: 1.7044"

    *   "EXE_FILES: bin/cpanm"

  Tue Jul 28 01:16:30 2020: "Module" Net::SSLeay
    *   "installed into: /usr/local/share/perl/5.26.1"

    *   "LINKTYPE: dynamic"

    *   "VERSION: 1.88"

    *   "EXE_FILES: "

  Tue Jul 28 01:16:32 2020: "Module" Mozilla::CA
    *   "installed into: /usr/local/share/perl/5.26.1"

    *   "LINKTYPE: dynamic"

    *   "VERSION: 20200520"

    *   "EXE_FILES: "
...

但是,当我运行source /etc/profile.d/modules.sh && module avail列出可供加载的模块时,我刚刚安装的模块没有显示出来,我只得到以下内容(不确定为什么同一件事会打印两次):

------------------------ /usr/share/modules/modulefiles ------------------------
dot  module-git  module-info  modules  null  use.own  

------------------------ /usr/share/modules/modulefiles ------------------------
dot  module-git  module-info  modules  null  use.own  

因此我认为我需要添加/usr/local/share/perl/5.26.1modulepath以便它找到已安装的模块。但是当我尝试使用module use --append /usr/local/share/perl/5.26.1并再次运行时module avail,我得到与上面相同的输出,表明该目录尚未添加。

答案1

环境模块与模块文件一起工作,模块文件是用 Tcl 编写的描述环境变化的脚本(例如向环境变量添加目录)。

您可以查看/usr/share/modules/modulefiles/dot您的设置来查看模块文件的示例。

在您的情况下,您安装了 Perl 模块,但是一旦安装就没有模块文件可以在环境模块上下文中桥接它们。

这里可能混淆了环境模块和 Perl 模块。环境模块可能有助于定义环境变量以访问您已安装的 perl 模块(例如,通过将目录添加/usr/local/share/perl/5.26.1PERL5LIB环境变量,请参阅perllocal下面的 modulefile 示例),但环境模块不会让您看到您已安装的 Perl 模块。

/usr/share/modules/modulefiles/perllocal

#%Module
append-path PERL5LIB /usr/local/share/perl/5.26.1

相关内容