簡體   English   中英

為Perl安裝了JSON模塊但無法加載它,無法在@INC中找到JSON.pm

[英]Installed JSON module for Perl but cannot load it, Can't locate JSON.pm in @INC

我用命令為PERL安裝了JSON

sudo perl -MCPAN -e 'install JSON'

但我不能使用它, use JSON; 導致錯誤:

無法在@INC中找到JSON.pm(您可能需要安裝JSON模塊)
(@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。)at
/Users/snaggs/Appsflyer/projects/build-machine-sdk/scripts/build_ios.pl第13行.BEGIN失敗 - 編譯在/Users/snaggs/Appsflyer/projects/build-machine-sdk/scripts/build_ios.pl中止第13行。

ls -l /Users/snaggs/perl5/perlbrew/perls/perl-5.16.0/lib/5.16.0/JSON/給了我:

drwxr-xr-x  3 snaggs  staff    102 Nov 29 12:53 PP
-r--r--r--  1 snaggs  staff  82532 Nov 29 12:53 PP.pm

$ perl -V給了我:

Summary of my perl5 (revision 5 version 16 subversion 0) configuration:

  Platform:
    osname=darwin, osvers=16.1.0, archname=darwin-2level
    uname='darwin snaggss-macbook-pro.local 16.1.0 darwin kernel version 16.1.0: thu oct 13 21:26:57 pdt 2016; root:xnu-3789.21.3~60release_x86_64 x86_64 '
    config_args='-de -Dprefix=/Users/snaggs/perl5/perlbrew/perls/perl-5.16.0 -Aeval:scriptdir=/Users/snaggs/perl5/perlbrew/perls/perl-5.16.0/bin'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=undef, usemultiplicity=undef
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-fno-common -DPERL_DARWIN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include',
    optimize='-O3',
    cppflags='-fno-common -DPERL_DARWIN -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
    ccversion='', gccversion='4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)', 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='env MACOSX_DEPLOYMENT_TARGET=10.3 cc', ldflags =' -fstack-protector -L/usr/local/lib'
    libpth=/usr/local/lib /usr/lib
    libs=-lgdbm -ldbm -ldl -lm -lutil -lc
    perllibs=-ldl -lm -lutil -lc
    libc=, so=dylib, useshrplib=false, libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
    cccdlflags=' ', lddlflags=' -bundle -undefined dynamic_lookup -L/usr/local/lib -fstack-protector'


Characteristics of this binary (from libperl): 
  Compile-time options: HAS_TIMES PERLIO_LAYERS PERL_DONT_CREATE_GVSV
                        PERL_MALLOC_WRAP PERL_PRESERVE_IVUV USE_64_BIT_ALL
                        USE_64_BIT_INT USE_LARGE_FILES USE_LOCALE
                        USE_LOCALE_COLLATE USE_LOCALE_CTYPE
                        USE_LOCALE_NUMERIC USE_PERLIO USE_PERL_ATOF
  Locally applied patches:
    Devel::PatchPerl 1.38
  Built under darwin
  Compiled at Nov 29 2016 12:51:12
  %ENV:
    PERLBREW_BASHRC_VERSION="0.78"
    PERLBREW_HOME="/Users/snaggs/.perlbrew"
    PERLBREW_MANPATH="/Users/snaggs/perl5/perlbrew/perls/perl-5.16.0/man"
    PERLBREW_PATH="/Users/snaggs/perl5/perlbrew/bin:/Users/snaggs/perl5/perlbrew/perls/perl-5.16.0/bin"
    PERLBREW_PERL="perl-5.16.0"
    PERLBREW_ROOT="/Users/snaggs/perl5/perlbrew"
    PERLBREW_VERSION="0.78"
  @INC:
    /Users/snaggs/perl5/perlbrew/perls/perl-5.16.0/lib/site_perl/5.16.0/darwin-2level
    /Users/snaggs/perl5/perlbrew/perls/perl-5.16.0/lib/site_perl/5.16.0
    /Users/snaggs/perl5/perlbrew/perls/perl-5.16.0/lib/5.16.0/darwin-2level
    /Users/snaggs/perl5/perlbrew/perls/perl-5.16.0/lib/5.16.0

錯誤消息中@INC的路徑列表意味着您正在嘗試使用系統perl,但您已為perlbrew管理的perl版本安裝了該模塊。

您需要確保使用正確版本的perl運行腳本。

最可能的原因是你有一個shebang line #!/usr/bin/perl 將其更改為#!/usr/bin/env perl以在$PATH搜索perl。 或者,將其更改為您使用perlbrew安裝的perl版本的完整路徑。

您已經為嘗試使用它的perl實例安裝了該模塊。 試試這個看看差異

perl -E'say $^X'

sudo perl -E'say $^X'

我看到你使用的是perlbrew ,因此在運行命令之前切換到適當的實例應該很簡單

順便說一下, perl -MCPAN -e 'install JSON'最好寫成cpan JSON

這是問題所在:

  • Perl/5.18
  • perl-5.16.0

你有兩個不同版本的perl在玩。 我建議您需要sudo perl -MCPAN -e 'install JSON'使用您在腳本中使用的路徑。 (或者將腳本更改為指向其他二進制文件)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM