查看阿里云官方文档
官方的流程大致是:
fun install init
编写FunFile文件
fun install
解释:以上流程的前提是使用fun init -n demo
新建一个服务及函数之后进行的,函数和服务的名字都叫demo,详细的过程也可以参考3分钟入门阿里云函数计算
如果使用vscode插件单独创建service和云函数,template.yml和Funfile的位置会遇到很多问题,可能出现的问题如下,依次解决:
一、 No module named "index"
第一种原因
报错原因:它的意思是找不到我的云函数的index方法,但事实上我的云函数下是有index方法的,官方template.yml中codeUri为:"./",但是我的项目这样设置就会报
No module named "index"
错
解决办法:将codeUri直接写到云函数的子目录下,例如我的文件目录是:(xxxservice是服务,xxxFunc是服务下的云函数)
那么我的template.yml中配置为:(重点看codeUri的配置)
第二种原因
依赖没有安装,在报错中会有提醒,no module named xxx,这种情况就需要手动安装依赖
二、执行fun install
报错:当前目录不是fun工作目录
报错原因:
fun install
方法需要在template.yml的同级目录执行,我的项目中,template.yml在服务目录下(和云函数同级)。如果在该目录下执行fun install
,按照我上一步的设置,会报错fun 在CodeUri中没有定义
类似的错误。
解决办法:命令行切换到云函数目录下(和index同级),依次执行:
fun install init
:目的是生成FunFile文件,方便后面直接安装依赖
fun install --runtime xxx --package-type xxxxxx
,具体意思见阿里云官方文档,例如我的项目是python3运行环境,如果我要安装pillow依赖,则使用fun install --runtime python3 --package-type pip pillow --save
,加上--save
的目的是将该次安装过程保存到Funfile中,可以打开Funfile看到其中多了条RUN fun-install pip install pillow
三、安装依赖后在项目中引入仍然报错:No module named xxx
注意:这一步不是第二步之后出现的错误
报错原因:fun install 的位置不正确,最后出现的.fun在根目录就会出现这个错误
解决办法:和第二步中解决办法一致