簡體   English   中英

AWS Lambda Python / R rpy2問題:“無法導入模塊'py_test':沒有名為'rpy2.rinterface._rinterface'的模塊”

[英]AWS Lambda Python/R rpy2 issue: “Unable to import module 'py_test': No module named 'rpy2.rinterface._rinterface'”

首先,我是R,AWS和python的新手。 因此,我試圖使用rpy2在AWS Lambda中獲得帶有嵌入式R代碼的python腳本。 我按照此處的說明 EC2實例上創建了Lambda包(已針對使用python 3.4進行了修改)。 該腳本在EC2虛擬環境中可以正常運行,但是當上傳到AWS並經過測試時,我收到錯誤消息:

無法導入模塊“ py_test”:沒有名為“ rpy2.rinterface._rinterface”的模塊

測試文件( py_test.py )如下所示(如您所見,我已經嘗試了各種嘗試來使rpy2模塊包含在內,等等):

import os

os.environ["R_HOME"] = os.getcwd()
os.environ["R_USER"] = os.path.join(os.getcwd(), 'rpy2')
os.environ["R_LIBS"] = os.path.join(os.getcwd(), 'library')
os.environ["LD_LIBRARY_PATH"] = os.path.join(os.getcwd(), 'lib')

import sys  
sys.path.append(os.path.join(os.getcwd(),'rpy2'))

import rpy2
from rpy2 import robjects

def test_handler(event, context):
    robjects.r('''
        f <- function(r, verbose=FALSE) {
            if (verbose) {
                cat("I am calling f().\n")
            }
            2 * pi * r
        }
        print(f(3))
        ''')

test_handler(None,None)

我不確定這些環境變量,但這就是我在互連網上發現的。 我已經搜尋了谷歌尋找答案,但空了。 任何建議將不勝感激!

我不認為rpy2可直接從lambda導入。

您需要在帶有代碼的目錄中安裝rpy2並進行zip,然后將zip文件加載到AWS。

看到這個https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html

編輯

好的。 看來您缺少所鏈接教程中的某些步驟。 確保從lib dir加載R共享庫,並確保lambda_handler函數具有相同的常規功能。

暫無
暫無

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

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