首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zappa Init -- Flask charmap:'charmap‘编解码器无法解码位置301中的字节0x81 :字符映射到<undefined>

Zappa Init -- Flask charmap:'charmap‘编解码器无法解码位置301中的字节0x81 :字符映射到<undefined>
EN

Stack Overflow用户
提问于 2018-04-24 08:34:05
回答 1查看 536关注 0票数 1

我正在尝试API的无服务器部署...令人恼火地卡在设置阶段。

我试图从cmd运行zappa init,但我得到了一个奇怪的错误。

这个命令实际上在我第一次运行它的时候就起作用了(我在最后一步取消了,意识到我想首先设置我的S3存储桶)。

当我再次尝试安装和配置awscli,然后在我的虚拟环境中安装flask时,我得到了以下错误:

代码语言:javascript
复制
Your Zappa deployments will need to be uploaded to a private S3 bucket.
If you don't have a bucket yet, we'll create one for you too.
What do you want call your bucket? (default 'zappa-hohr3kxh7'):

It looks like this is a Flask application.
Oh no! An error occurred! :(

==============

Traceback (most recent call last):
  File "c:\users\joshu\documents\code\machine-learning\boston-housing-price\app\env\venv\lib\site-packages\zappa\cli.py", line 2610, in handle
    sys.exit(cli.handle())
  File "c:\users\joshu\documents\code\machine-learning\boston-housing-price\app\env\venv\lib\site-packages\zappa\cli.py", line 476, in handle
    self.init()
  File "c:\users\joshu\documents\code\machine-learning\boston-housing-price\app\env\venv\lib\site-packages\zappa\cli.py", line 1604, in init
    matches = detect_flask_apps()
  File "c:\users\joshu\documents\code\machine-learning\boston-housing-price\app\env\venv\lib\site-packages\zappa\utilities.py", line 143, in detect_flask_apps
    lines = f.readlines()
  File "c:\users\joshu\documents\code\machine-learning\boston-housing-price\app\env\venv\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 301: character maps to <undefined>

我运行的是Windows10,Python 3.6 Anaconda发行版。

我的大部分代码都在一个api.py文件中,除此之外还有一个index.html文件。下面是api.py代码:

代码语言:javascript
复制
from flask import Flask, render_template, request, jsonify
from sklearn.externals import joblib
import boto3
import numpy as np
import pickle

app = Flask(__name__)

BUCKET_NAME = 'ml-boston-housing'
MODEL_FNAME = 'model.pkl'

S3 = boto3.client('s3', region_name='us-east-1')

# memoized annotation, caches model file after it's pulled
def memoize(f):
    memo = {}

    def helper(x):
        if x not in memo:
            memo[x] = f(x)
        return memo[x]

    return helper


@app.route('/')
@app.route('/index')
def index():
    return render_template('index.html')


@app.route('/predict', methods=['POST'])
def make_prediction():
    if request.method == 'POST':
        app.logger.info("{} request received from: {}".format(
            request.method, request.remote_addr))

        mdl = load_model(MODEL_FNAME)
        input_data = np.zeros((1, 13))

        if request.json or 'data' in request.json:
            for i, k in enumerate(request.get_json()):
                input_data[0, i] = request.form.get(k, 0)
            result = np.squeeze(mdl.predict(input_data))
            return jsonify({'result': result})
        else:           
            for i, k in enumerate(request.form.keys()):
                input_data[0, i] = request.form.get(k, 0)
            result = np.squeeze(mdl.predict(input_data))
            return render_template('index.html', label=result)



@memoize
def load_model(key):
    response = S3.get_object(Bucket=BUCKET_NAME, Key=key)
    modelstr = response['Body'].read()
    model = pickle.load(modelstr)

    return model


if __name__ == '__main__':
    app.run(host='0.0.0.0')
EN

回答 1

Stack Overflow用户

发布于 2018-04-25 23:03:19

Zappa init运行时,它会调用utilities.py文件中的def detect_flask_apps()函数。此函数读取项目目录中的每个python文件,包括虚拟环境文件夹中的库。

有一个名为functools.py的库,它必须具有与缺省字符编码不同的字符编码,因为

代码语言:javascript
复制
with open(full, 'r') as f:
    lines = f.readlines()

读取~/env/venv/Lib/functools.py时失败。

修复方法是指定编码:

代码语言:javascript
复制
with open(full, 'r', encoding='utf-8') as f:
    lines = f.readlines()

zappa/utilities.py -- line 148

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49991762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档