如何在Python版Digital Ocean Functions中复用工具方法?
在Digital Ocean Functions中复用Python代码(无需发布独立库)
需求:在Digital Ocean Functions的无服务器环境中,跨多个函数复用Python代码,同时尽可能避免发布独立库。
失败的尝试方案
- 单文件方案:在
packages/tom/目录下创建tomsfns.py,文件内包含t1、t2两个函数入口以及工具方法make_msg,并在project.yml中配置了两个函数入口。但部署后仅生成一个函数,无法得到预期的两个独立函数。 - 多文件方案:将工具方法抽离到
rickutils.py,让r1.py和r2.py导入并调用该方法。部署后rickutils被误当作函数发布,且运行时抛出错误:stderr: Invalid function: No module named 'make_msg'。
可行的解决方案
- 在项目根目录创建
lib目录,将公共复用代码存放在lib/utils.py中; - 在需要使用公共代码的函数目录(例如
packages/sample/r1)下添加.include文件,写入相对路径../../../lib/utils.py,构建过程中会自动将公共文件复制到函数的运行目录; - 开发阶段,可在IDE中将
lib目录标记为Sources Root,方便代码导入和智能提示; - 当前场景无需额外编写
build.sh脚本,若后续需要引入第三方外部库时,再添加该脚本即可。
内容的提问来源于stack exchange,提问作者Dilapidus
相关产品推荐
相关产品推荐

