前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【玩转云函数】腾讯云函数 Python 依赖安装

【玩转云函数】腾讯云函数 Python 依赖安装

作者头像
腾讯云serverless团队
发布2021-07-20 19:10:30
发布2021-07-20 19:10:30
4.6K0
举报
文章被收录于专栏:Tencent Serverless 官方专栏

以下内容来自「玩转腾讯云」用户原创文章,已获得授权。

本次作者主要是想利用腾讯云的 Serverless 云函数服务,由于腾讯云函数 Python 的环境只配置了基础的 Python 库,比如流行的 Pandas 库并没有包含在内,这就导致了面板数据类型的分析不能很好的进行。本次文章主要想解决的问题如下:

1. 利用 Docker 部署跟腾讯云函数一致的环境;

2. 由于腾讯云函数采用了 Python 3.6.1 版本,该版本相对而言比较老旧,需要安装适配的 Pandas 版本;

3. 本次依赖安装,需要尽可能的利用腾讯云函数中 Python 3.6.1 自带的库,仅安装需要的依赖,以便提高加载速度;

4. 本次主要在本地生成合适的依赖,手动上传到腾讯云函数服务中;

1. 本地安装 Docker

本地安装 Docker 服务,需要根据不同的操作系统来采用不同的安装方式,本次作者主要采用 Windows 10 64 位的家庭版

操作系统,目前最新的 Windows 版本已经可以直接安装 Docker 服务。具体的安装方式,由于网络上已经有各式各样的安装指导,参考文章:

  • 文章地址:https://www.runoob.com/docker/windows-docker-install.html

2. 开启服务

1. 注册腾讯云;

2. 开通腾讯云 Severless 服务;

3. 函数服务 -> 新建 -> 自定义创建 -> 选择合适的地区(尽量靠近目标用户地区)-> 设置合适的函数名称 -> 选择 Python3.6;

4. 函数代码 -> 本地上传 zip 包;

3. 下载镜像

1. 下载腾讯云函数的 Python 3.6.1 基于 CenterOS 的镜像:docker pull ccr.ccs.tencentyun.com/scf-repo/runtime-python3:latest

2. 查看镜像:docker images

3. 给镜像打标签:docker tag 镜像ID scf:python3

4. 进入环境:docker run -it --name py --network=host -v /tmp/foo:/tmp/bar scf:python3 /bin/bash

5. 切换到路径:cd /tmp/bar

6. 测试安装:pip install pandas -t .

7. 下载文件到本地:docker cp py:/tmp/bar C:\Users\king\Desktop\index

8. 将步骤 7 中的 py 和 4 中的 py 对应;

9. 将拷贝出来的依赖和主程序一起打包,命名为 index.zip;

10. 注意可以用老的库,否则需要打包多个更新后的函数;

11. zip 包不能超过 50 M;

4. 测试示例

下面是一个部署完成后的测试示例,主要是为了说明参数传递和返回的问题,已经在代码中有注释,可以忽视 aaa 函数的内容。

代码语言:javascript
复制
# -*- coding: utf8 -*-import jsonimport sys
import pandas as pd
def my_add(a, b, c):    my_sum = a + b + c      return my_sum

def main_handler(event, context):    print('event:', event)    print('context:', context)    a = float(event['queryString']['p1'])  # 注意返回的格式问题和传递的参数    b = float(event['queryString']['p2'])  # 注意返回的格式问题和传递的参数    c = event['queryString']['p3']    print(c)    result= my_add(a, b, c)
    return {    "isBase64Encoded": False,    "statusCode": 200,    "headers": {"Content-Type": "application/json"},    "body": json.dumps({'result': result})  # 注意返回的格式问题和传递的参数}

参考文章

1. 腾讯云函数镜像开发:https://cloud.tencent.com/document/product/583/50826

2. 腾讯云函数返回格式:https://www.lanol.cn/post/386.html

3. 腾讯云函数 Python 参数:https://cloud.tencent.com/document/product/583/11061


Web Function 体验官召集令!

惊喜福利满满

(点击下图 ? 查看详情)

Web Function 使用体验

(请在 PC 端访问)

  • Web Function 产品文档: https://cloud.tencent.com/document/product/583/56123
  • Web Function 快速体验链接: https://console.cloud.tencent.com/scf/list-create?rid=16&ns=default&keyword=WebFunc

当前已在国内各大区域发布上线,欢迎体验使用!


推荐阅读

One More Thing


欢迎进入千人 QQ 群 (871445853) 交流 Serverless!

  • GitHub: github.com/serverless
  • 官网: cloud.tencent.com/product/serverless-catalog

点击「阅读原文」,了解更多 Web Function 产品详情。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ServerlessCloudNative 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 以下内容来自「玩转腾讯云」用户原创文章,已获得授权。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档