无法导入boto3

时间:2018-08-14 19:12:50

标签: python r amazon-web-services boto3 shiny-server

我使用Amazon SageMaker训练和部署了模型,我想通过调用已部署的终端节点进行实时预测。我发现R Shiny易于创建快速的交互式用户界面Web应用程序。我使用了网状R包与Python进行通信。首先,我保存了一个Python函数,该函数调用端点并获得传递给端点的功能输入的预测。然后在R中,在server.R中,我将Python函数作为源,并向其传递一个R对象以获得预测。我的Python函数如下所示:

def predict_end_point(df):

    import numpy as np
    import pandas as pd
    import os

# Define IAM role

    import boto3
    import re
    import sagemaker
    boto_session = boto3.Session(profile_name='xxx',region_name='us-east-2',aws_access_key_id ='xxx', aws_secret_access_key ='xxx' )
    sess = sagemaker.Session(boto_session=boto_session)
    endpoint_name = 'xgboost-v1'
    predictor = sagemaker.predictor.RealTimePredictor(endpoint=endpoint_name,sagemaker_session=sess)
    from sagemaker.predictor import csv_serializer, json_deserializer
     predictor.content_type = 'text/csv'
     predictor.serializer = csv_serializer
     predictor.deserializer = None
     x  = predictor.predict(df)
     x = x.decode("utf-8")
     return x

我的应用程序在本地计算机上运行良好,但我想将其部署到云中。我在AWS EC2中创建了一个闪亮的服务器,并安装了所有必需的软件包。但是,当我在浏览器中打开闪亮的应用程序时,出现错误消息ModuleNotFound错误:没有名为“ boto3”的模块。但是,当我在同一实例中打开R服务器并在R笔记本中调用相同的Python脚本时,它可以正常工作并给出预测。为什么闪亮的服务器无法获取boto3?正如您在代码的服务器部分看到的那样,我告诉它要使用哪个Python,并且我确认boto3已安装在该Python环境中。如果我在同一实例中从R服务器运行应用程序,则会收到“ NameError:未定义名称'ssl'”

server.R

library(shiny)
library(reticulate)
use_python("/home/ubuntu/anaconda3/bin/python", required=TRUE)

source_python("predict_end_point.py")



shinyServer(function(input, output) {


  selected = reactive({
        z = c(input$season,input$holiday, input$workingday, input$weather, 
        input$temp, input$atemp, input$humidity, input$windspeed, 
        input$year, input$month, input$day, input$dayofweek, input$hour)

        as.numeric(z)
           })



  output$selected_values = renderTable({
               input$go
              isolate(selected())

               })
   output$text <- renderText({
           input$go
          isolate(predict_end_point(selected()))

          })

 })

0 个答案:

没有答案