关键是怎样把安装的第三方依赖和用户写的代码打包在一起。华为文档建议把依赖和用户代码分开打包上传,依赖作为层绑定到函数,我觉得有点麻烦。因为腾讯云和华为云函数很类似,所以可以参考腾讯云的部署方式,根据腾讯的文档,依赖其实不需要做特别处理,可以直接和用户代码文件一起打包。
以下是一个例子:
cd
入这个文件夹;python3 -m venv .venv
创建虚拟环境;source './.venv/bin/activate'
激活该虚拟环境;pip3 install requests==2.30.0 urllib3==1.26.2
安装所需的库;index.py
文件,并写入代码:import requests
import json
def handler(event, context):
response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
response_json = response.json()
print(json.dumps(response_json, indent=4))
return response_json
./packages
文件夹中,正如前面所说,安装的依赖不需要特别处理,可以和用户代码一起打包,所以我把这些依赖从虚拟环境中复制出来并放在 index.py
旁边;cp -r ./.venv/lib/python3.9/site-packages ./packages
./packages
文件夹全部打包在一起,这条命令会忽略所有隐藏文件,所以 .venv
会被忽略;zip -rq code.zip *
.venv
中复制出来,而是直接打包 .venv
,这时需要把上面这行命令的 *
改为 .
:zip -rq code.zip .
相关文章: