[英]Installed JSON module for Perl but cannot load it, Can't locate JSON.pm in @INC
[英]Can't include JSON::XS module locally in CGI perl script but can include JSON module
因此,對於特定的CGI perl腳本,我包括了JSON這樣的代碼來處理一些.json文件:
use lib "./modules/JSON/lib";
use JSON;
這很好,很好。 Web目錄在modules文件夾中保存所需的文件。
但是,JSON模塊非常慢。 我讀到JSON:XS可以快很多,但是我似乎不能簡單地這樣使用它:
use lib "./modules/JSON-XS";
use JSON::XS;
JSON-XS文件中沒有lib文件夾,我嘗試過組合使用(即同時使用文件夾等),但沒有用。
不,我不能簡單地為此特定項目安裝模塊。
任何幫助表示贊賞。
不,我不能簡單地為此特定項目安裝模塊。
您必須先安裝模塊,然后才能使用它。 您只是在半途而廢。 不過,這不適用於JSON :: XS。 它之所以快是因為它是用C編寫的,因此您需要編譯C代碼。 到目前為止,最簡單的方法是使用提供的安裝程序,而不是重新發明輪子。
(您知道可以將模塊安裝到任何目錄中,並且不需要特殊權限,對嗎?)
Perl發行版通常可以在卸載狀態下使用。 您只需要做的就是調用perl Makefile.PL && make
(或對於基於Module::Build
的發行版: perl Build.PL && ./Build
)。 這將進行所有必要的編譯(如果是XS模塊),並將庫文件復制到blib
子目錄中。 在腳本中而不是use lib
您應該編寫use blib
:
use blib "/path/to/JSON-XS";
請注意,如果模塊具有依賴項,則必須自己解決它,並添加許多use blib
語句。 JSON::XS
沒有那么多的依賴關系,但是對於其他模塊來說確實很不方便。 在這種情況下,您可能應該尋求其他解決方案,例如,將CPAN.pm
與local::lib
一起使用。
好的,這終於對我有用:
我對所有依賴項都執行了此過程(按照從不依賴關系到更多依賴關系的順序)
export PERL5LIB = ~/path/to/modules/perl5
perl Makefile.PL PREFIX=$PERL5LIB LIB=$PERL5LIB
make
make test
make install
這將所有模塊安裝到我稱為perl5的目錄中。 這也意味着當您嘗試在本地安裝其他模塊時,由於添加了PREFIX / LIB,因此不會出現依賴關系問題。
然后,我要做的就是將其添加到我的perl CGI腳本中:
use lib "./modules/perl5";
use JSON::XS;
PS:JSON :: XS快得多了!
:D
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.