首页 > 编程知识 正文

安卓可以自定义函数的计算器(导卡函数不正确)

时间:2023-05-06 16:24:25 阅读:91585 作者:913

前言

首先介绍本文中出现的几个重要概念。

函数计算(Function Compute ) :函数计算是一种事件驱动的服务,通过函数计算,用户不需要管理服务器等的运行状况,只需要编写代码进行上传。 函数计算准备计算资源,并以灵活可扩展的方式执行用户代码。 用户只需要根据实际代码的执行所消耗的资源来付费。 计算函数详细信息的引用。

Fun: Fun是一种用于支持服务器无APP部署的工具,可以轻松管理函数计算、API网关和日志服务等资源。 通过资源配置文件(template.yml )帮助进行开发、生成和部署。 对Fun的更多文档引用。

fun install: fun install是fun工具的子命令,用于安装pip和apt的依赖关系,同时提供命令行界面和fun.yml描述文件的格式。

备注:本文介绍的技术的Fun版本必须在2.9.3以上。

函数计算安装依赖于第三方是个很大的打击。 文章函数计算依赖库方法总结了可能出现的问题和解决方法fun install根据以往的经验和成果,将最佳实践方法固化为工具,使用户可以轻松安装依赖关系。

使用

初始化

funinstallinit在当前目录中初始化fun.yml文件。 (这一步不是必需的。 如果您打算手写fun.yml,然后使用fun install命令批量执行任务,init就是一个好的开始。 )

在函数计算项目的根目录下运行fun install init命令,选择runtime。

$ fun安装单元

? 选择运行时(用户运行时) )。

python2.7

python3

节点6

节点JS 8

java8

php7.2

然后,在当前目录中生成以下fun.yml文件:

运行时间: python 2.7

任务:

安装 pip 包依赖

以下命令安装python的tensorflow软件包

$ fun install---- runtime python 2.7----软件包-类型管道软件流

skippullingimagealiyunfc/runtime-python 2.7:建筑物-1.2. 0 .

任务=[未命名]

=python用户基础=/代码/.fun/pythonpipinstall--用户资源流

说明

-runtime指定运行时。 如果fun.yml文件已经初始化,则可以省略此选项,因为在fun.yml中声明了运行时。 --package-type指定依赖于安装的类型。 pip和apt是当前的两个选项值。 tensorflow是pip包的名称。 执行命令在fc-docker提供的容器中,将逐行打印在容器内部执行的命令。 例如,上述命令在内部实际执行了python user base=/code/. fun/pythonpipinstall-usertensorflow命令。

安装完成后,将生成. fun目录,可执行文件位于. fun/python/快乐蘑菇目录中,库文件位于. fun/python/lib/python 2.7/site

. fun

( python

高兴的小蘑菇

freeze_graph

markdown_py

pbr

saved_model_cli

tensorboard

tflite_convert

toco

toco_from_protos

( lib

( python2.7

(site -包

tensorboard

tensor board-1.12.2 .距离信息

tensorflow

tensor flow-1.12.0.dist -信息

term color-1.1.0 .距离信息

.

与以前的pip install -t . package-name方法相比,可以整理fun install安装文件的存储位置,将依赖文件和代码文件分离,清理、分割后可以轻松地在OSS或NAS中初始化依赖文件但是,组织后会出现新的问题,用户必须自定义环境变量库文件才能在程序中找到。 为了便于用户使用,打印需要fun install env的环境变量。

$ fun安装环境

LD _ library _ path=/代码/.fun /根/用户/LIB/x86 _ 64-Linux-GNU : /代码: /代码/LIB 3360 /用户/

路径=/代码/.fun/root/usr/local /喜闻乐见的蘑菇: /代码/.fun/root/usr/local/s欣见

喜的小蘑菇:/code/.fun/root/usr/欣喜的小蘑菇:/code/.fun/root/usr/s欣喜的小蘑菇:/code/.fun/root/s欣喜的小蘑菇:/code/.fun/root/欣喜的小蘑菇:/code/.fun/python/欣喜的小蘑菇:/usr/local/欣喜的小蘑菇:/usr/local/s欣喜的小蘑菇:/usr/欣喜的小蘑菇:/usr/s欣喜的小蘑菇:/s欣喜的小蘑菇:/欣喜的小蘑菇 PYTHONUSERBASE=/code/.fun/python

关于如果设定函数计算的环境变量,请参考 https://help.aliyun.com/document_detail/69777.html 。如果您使用 fun local 和 fun deploy 进行调试和部署,您无需关注环境变量问题,已经帮您设定好了。

使用 --save 持久化

install 命令加上 --save 参数,会将命令持久化成 task 保存到 fun.yml 文件中。

$ fun install --runtime python2.7 --package-type pip --save tensorflow skip pulling image aliyunfc/runtime-python2.7:build-1.2.0... Task => [UNNAMED] => PYTHONUSERBASE=/code/.fun/python pip install --user tensorflow

上面的命令多加了一行 --save 参数,查看 fun.yml 内容:

runtime: python2.7 tasks: - pip: tensorflow local: true

之后直接执行 fun install 不带参数,就可以依次执行任务。

$ fun install skip pulling image aliyunfc/runtime-python2.7:build-1.2.0... Task => [UNNAMED] => PYTHONUSERBASE=/code/.fun/python pip install --user tensorflow

使用 -v 显示详细日志

$ fun install -v skip pulling image aliyunfc/runtime-python3.6:build-1.2.0... Task => [UNNAMED] => apt-get update (if need) Ign http://mirrors.aliyun.com stretch InRelease Get:1 http://mirrors.aliyun.com stretch-updates InRelease [91.0 kB] Get:2 http://mirrors.aliyun.com stretch-backports InRelease [91.8 kB] Get:3 http://mirrors.aliyun.com stretch/updates InRelease [94.3 kB] Hit http://mirrors.aliyun.com stretch Release.gpg Hit http://mirrors.aliyun.com stretch Release Get:4 http://mirrors.aliyun.com stretch-updates/main Sources [3911 B] ....

安装 apt 包依赖

函数计算使用 apt-get 安装依赖是另一类常见的安装问题,使用 fun install 也可以方便的安装。

$ fun install --runtime python3 --package-type apt libzbar0 skip pulling image aliyunfc/runtime-python3.6:build-1.2.0... Task => [UNNAMED] => apt-get update (if need) => apt-get install -y -d -o=dir::cache=/code/.fun/tmp libzbar0 => bash -c 'for f in $(ls /code/.fun/tmp/archives/*.deb); do dpkg -x $f /code/.fun/root; done;' => bash -c 'rm -rf /code/.fun/tmp/archives'

使用方法及其参数和 pip 包依赖类似,只需要将 --package-type 设定成 apt, 包名使用日常 apt-get 可以安装的 deb 包名即可。

使用 fun.yml

fun.yml 由一组 task 组成,执行 fun install 命令时会依次执行 task ,达到批量安装的效果。

fun.yml 的文件格式如下

runtime: python3 tasks: - name: install libzbar0 apt: libzbar0 local: true - name install Pillow by pip pip: Pillow local: true - name: just test shell task shell: echo '111' > 1.txt

runtime 是必填的字段。目前 task 有三种类型:apt, pip 和 shell。fun.yml 文件放置在 template.yml 文件中函数 codeUri 指向的目录,如果 template.yml 里声明了多个函数,并且放置在不同的 codeUri 目录,需要创建多个 fun.yml 文件。

所有 task 的 name 字段是可选的,没有 name 字段的时候执行的时候会输出为

Task => [UNNAMED]

apt/pip task

apt 和 pip 类型的 task 都是 install task 的子类型,描述格式类似

name: install libzbar0 apt: libzbar0 local: true

上面的 task 描述与下面的命令是等价的

fun install --package-type apt libzbar0

在使用 fun install 安装的过程中,使用 --save 参数可以在当前目录的 fun.yml 文件中生成上面 task 的描述结构。

local 字段默认为 true,表示依赖会被装在当前目录的 .fun 子目录下,打包 zip 的时候回一并打包进去。设定为 false,依赖安装到系统目录,这种情况一般用于编译依赖,比如某个执行文件或者库是编译或者构建期需要的,运行期不要,那可以设定 local: false,打包的时候会被忽略,不影响最终 zip 包的文件尺寸。

shell task

shell 类型的 task 是为基于源码编码的安装场景设计的。

name: install from source shell: ./autogen.sh --disable-report-builder --disable-lpsolve --disable-coinmp

示例

下面是一个 python3 实现简单二维码识别程序部署到函数计算的例子。源码位于 https://github.com/aliyun/fun/tree/master/examples/install/pyzbar_example

本例子使用 pip 的 pyzbar 库进行二维码识别,pyzbar 依赖 apt-get 安装的 libzbar0 库。装载图片需要 pip 的 Pillow 库。所以 fun.yml 的文件描述如下

runtime: python3 tasks: - apt: libzbar0 local: true - pip: Pillow local: true - pip: pyzbar local: true

使用 fun install 安装依赖

$ fun install skip pulling image aliyunfc/runtime-python3.6:build-1.2.0... Task => [UNNAMED] => apt-get update (if need) => apt-get install -y -d -o=dir::cache=/code/.fun/tmp libzbar0 => bash -c 'for f in $(ls /code/.fun/tmp/archives/*.deb); do dpkg -x $f /code/.fun/root; done;' => bash -c 'rm -rf /code/.fun/tmp/archives' Task => [UNNAMED] => PYTHONUSERBASE=/code/.fun/python pip install --user Pillow Task => [UNNAMED] => PYTHONUSERBASE=/code/.fun/python pip install --user pyzbar

template.yml 文件内容如下

ROSTemplateFormatVersion: '2015-09-01' Transform: 'Aliyun::Serverless-2018-04-03' Resources: pyzbar-srv: Type: 'Aliyun::Serverless::Service' pyzbar-fun: Type: 'Aliyun::Serverless::Function' Properties: Handler: index.handler Runtime: python3 Timeout: 60 MemorySize: 128 CodeUri: .

index.py 文件内容如下:

from pyzbar.pyzbar import decode from pyzbar.pyzbar import ZBarSymbol from PIL import Image def handler(event, context): img = Image.open('./qrcode.png') return decode(img, symbols=[ZBarSymbol.QRCODE])[0].data

使用 fun local 在本地执行

fun local invoke pyzbar-fun skip pulling image aliyunfc/runtime-python3.6:1.2.0... Thalassiodracon RequestId: 964980d1-1f1b-4f91-bfd8-eadd26a307b3 Billed Duration: 630 ms Memory Size: 1998 MB Max Memory Used: 32 MB

Thalassiodracon 即为识别后的输出结果。

小结

本文介绍了 fun 工具的一个新特性 fun install ,使用 fun install 可以方便的安装 apt 和 pip 软件包,对于多次安装的工程化需求可以考虑将安装步骤持久化为 fun.yml 文件. fun.yml 文件提供了比命令行更多的功能,可以编写 shell 类型的 task,以支持源码安装的场景。可以通过设定 local: false 将依赖安装的系统目录,以解决编译依赖而非运行依赖的情况。

作者:倚贤

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。