1. 前言
首先介绍下在本文出现的几个比较重要的概念:
函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考。
Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档 参考。
如何在函数计算中安装依赖,一直是一个困扰用户的难题。我们写过很多文章,也推出很多功能,都是为了解决用户安装依赖“痛”的问题。
*备注:请确保 Fun 工具版本在 3.0.0+
2. 依赖安装方法一览
我们曾写过一系列文章介绍如何安装函数依赖,这次,我们从用户需求的视角对这些安装方式进行简单分类,以便于用户可以根据自己的需求,寻找到正确的解决方法。
2.1 用户需求一:我就想安装一个库到函数,能不能不让我理解 pip、apt-get 等包管理工具的复杂概念?
fun install 支持这种安装方式,使用方法为,安装到某个函数下代码目录下,只需要在 template.yml 所在的目录执行:
安装 apt-get 依赖:fun install -f functionName -p apt libzbar0
安装 pip 依赖:fun install -f functionName -p pip flask
-p 指的是安装的库类型,现在支持 pip、apt 两种。因为这两种类型的库安装难度是比较大的。那么对于 npm、maven 这些库,怎么装?往下看。
另外,-f functionName 指的是会将依赖安装到这个函数目录下。如果想安装依赖到当前目录也是支持的,可以通过 fun install -h 查看更多帮助信息或者阅读《开发函数计算的正确姿势 —— 安装第三方依赖》。
2.2 用户需求二:我想装的库,安装步骤比较复杂,我只知道怎么在 linux 服务器上装,函数计算能否提供相同的安装体验?
通过 Fun 3.0 提供的 fun innstall sbox 可以做到这一点。
使用方法为,在 template.yml 所在的目录,执行如下命令:
fun install sbox -f pyzbar-fun -i
其中 -f pyzbar-fun 指的是 template.yml 声明的一个函数。
执行完成后,就会进入一个用于安装依赖的交互式环境。这个交互式环境其实是一个函数计算的模拟环境,在这个环境上装的依赖,可以在最大程度上保证,部署后,不会出现因为环境差异导致的兼容问题。
在这个环境里,常见的 linux 命令都是可以使用的,比如 apt-get、pip、npm 等等。只不过,在安装 apt-get 以及 pip 库时,需要添加 fun-install 前缀。比如原先装一个包的步骤为 pip install flask,那在这个环境中,只需要添加 fun-install 前缀就好了,也就是 fun-install pip install flask。
注意: 直接在交互环境使用 pip 也是可以的,只不过,通过原生命令 pip 安装的依赖都会被安装到系统目录里,退出交互式环境时,这些依赖不会保留下来。而通过 fun-install 安装的依赖会被安装到代码目录,退出交互式命令时,可以被保留下来。
交互式安装依赖的更多帮助信息,请参考《开发函数计算的正确姿势——使用交互模式安装依赖》
2.3 用户需求三:我是 node/java/php/c# 用户,我想装一些库,怎么装?
npm 的库安装本身就比 python、apt-get 的库容易很多。原因是 npm install 后,会直接安装在项目目录的 node_modules 里,只要打包的时候,也就是将 template.yml 中的 CodeUri 指向 node_modules 所在的目录就好了。更多信息参考。
java 库安装思路为在 maven 声明依赖,然后在打包时,将所有依赖都打包到同一个 jar 中,然后部署就可以了。更多信息参考。
php 以及 c# 的思路其实都是类似的,可以参考 php 的文档以及 c# 的文档。
2.4 用户需求四:装完后,有没有办法“录制”下来,再次需要的时候,可以一键安装?
请参考我们的 Funfile 文档。
2.5 用户需求五:我的安装比较复杂,即使在本地,我也不知道要怎么装,你们有什么方案吗?
这种场景,其实并没有统一的解决方案,只能 case by case 的解决。目前,我们已经积累了一些解决方案,基本上都是“开箱即用”的。可以参考 Fun 主页的“第三方模板”章节。
可以阅读下我们的 《函数计算安装依赖库方法小结》,这个是原理性文章,包括我们推出的一些功能,都是基于这里介绍的原理来实现的。
如果依旧没能解决问题,可以去我们的博客里扒一扒,也许有意外收获。
3. 总结
上面介绍了一些常见的依赖安装的问题以及相关的解决方案。
本文作者:tanhe123
原文链接:https://yq.aliyun.com/articles/719107?utm_content=g_1000077702
本文为云栖社区原创内容,未经允许不得转载。
分享到:
相关推荐
根据给定的文件信息,以下是对STM32F4函数固件库手册——新库的知识点的详细说明: 首先,手册标题中的“STM32F4函数固件库手册——新库”直接指出了本手册是关于STM32F4系列微控制器的新版函数固件库的参考资料。...
"数学建模——模糊数学方法PPT学习教案.pptx" 本资源是关于数学建模的模糊数学方法学习教案,总共38页。以下是对这个资源的知识点总结: 模糊集的基本概念 模糊集是数学建模中的一种重要概念。它是指具有隶属函数...
代码 基于遗传算法的优化计算——建模自变量降维代码代码 基于遗传算法的优化计算——建模自变量降维代码代码 基于遗传算法的优化计算——建模自变量降维代码代码 基于遗传算法的优化计算——建模自变量降维代码代码...
涂鸦智能CBU模块二次开发指导手册入门版——智能插座.pdf是涂鸦智能硬件设备的开发指导手册,主要介绍了手机端-云端-终端的配置方法、相互关系、以及控制原理,并提供了一个demo代码,演示如何使用涂鸦SDK实现手机端...
根据提供的文件信息,我们...这些操作对于正确使用RationalDMIS软件中的三角函数计算功能至关重要。需要注意的是,在操作过程中,用户应该熟悉相关的按键和功能,以及计算器界面的布局,才能高效且准确地完成计算任务。
讲述excel函数——Vlookup函数
在VC中实现不完全伽马函数的数值计算,可以采用多种算法,例如辛普森法则、梯形法则或者高斯积分等数值积分方法。对于特定的p值和x值,还可以利用渐近展开式或已知的函数关系来简化计算。例如,当x较大时,可以使用...
本文旨在通过详细分析《__main函数内幕——从加载视图到执行视图.pdf》中的内容,揭示这一转变背后的奥秘。 **加载视图与执行视图的概念** 在讨论具体细节之前,首先需明确加载视图与执行视图的概念。加载视图是指...
每个函数都有特定的参数和返回值,开发者需要根据需求正确调用并处理结果。 接口在Windows API中主要体现在COM(Component Object Model)组件中。COM是一种面向对象的技术,它定义了对象如何交互的规范。例如,`...
神经网络的matlab案例,本案例介绍如下: 技术深度:案例详细介绍了如何使用MATLAB进行深度学习模型的构建、训练和测试。 实际应用:通过具体的图像识别...优化策略:探讨不同的训练策略和参数调整方法,优化模型性能。
实例004——使用函数模板实现不同数据类型的极值函数 实例004——使用函数模板实现不同数据类型的极值函数 实例004——使用函数模板实现不同数据类型的极值函数
《MATLAB 神经网络案例分析》源代码&数据
图像处理——周长、面积计算(Matlab) 本文主要介绍图像处理技术在计算细胞数量、面积和周长方面的应用,使用 Matlab 软件实现图像处理和计算。图像处理的主要步骤包括图像灰度化、二值化、边缘检测、膨胀、填充...
《数字信号处理——基于计算机的方法(第四版)MATLAB源程序》是一本深入探讨数字信号处理理论与实践的教材,作者为余翔宇。这本书特别强调了计算机在信号处理中的应用,采用MATLAB这一强大的计算工具,使得读者能够...
"深度学习原理24——损失函数与优化过程" 深度学习是人工智能领域中一个非常重要的分支,深度学习的原理是以神经网络为基础的,通过大量的数据和复杂的计算来实现机器学习和模式识别。深度学习的核心是神经网络的...
2015北京一模分类函数与导数——理科.doc
《密码学C语言函数库——Miracl库(VC)完整版》 Miracl库是一个广泛用于密码学领域的C语言函数库,尤其在数学计算和数论算法方面表现出色。该库为开发者提供了丰富的工具,以实现各种密码学算法,如大整数运算、...
《ARM Cortex-M3嵌入式开发实例详解——基于NXP LPC17XX》是一本深入讲解基于ARM Cortex-M3架构微控制器NXP LPC17XX的实战书籍,由张燕妮编写并提供了丰富的程序源代码。这本书旨在帮助读者掌握如何在实际项目中应用...