You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cloud Functions导入本地下载的私有Python包出现ModuleNotFoundError如何解决

你当前报错的核心原因是执行pip install -t vendor foo后,vendor目录下仅生成了foo包的元数据目录foo-0.0.1.dist-info,没有生成foo包的实际源码目录,因此无法导入vendor.foo模块。

排查步骤

  • 重新执行安装命令并输出详细日志,确认包安装过程无报错:
    pip install -v -t vendor foo
    
    执行后检查vendor目录下是否出现foo文件夹,正常安装完成后目录结构应为:
    vendor
    |- foo/ # 实际包源码目录,缺失则必然导入失败
    |- foo-0.0.1.dist-info
    |- __init__.py
    

正确导入逻辑

Cloud Functions私有依赖导入有两种常用方式,可按需选择:

  1. 无前缀导入(官方推荐)
    无需修改原有包的导入逻辑,直接将vendor目录加入Python模块搜索路径即可:
    import sys
    from pathlib import Path
    # 确保vendor目录和入口函数文件(如main.py)同层级
    sys.path.insert(0, str(Path(__file__).parent / "vendor"))
    
    # 直接导入包,无需加vendor前缀
    import foo
    
  2. 带vendor前缀导入
    如果需要用import vendor.foo的格式,除了保证vendor下存在foo目录,还需要在vendor/__init__.py中加入以下内容:
    from . import foo
    

部署额外注意事项

  • vendor目录需要和函数入口文件放在同一级,部署时不要将vendor目录加入.gcloudignore规则,确保目录随代码一起上传
  • 如果函数运行环境和本地环境不一致(如本地是Windows,函数运行在Linux x86环境),安装依赖时需要指定目标平台参数,避免架构不兼容:
    # 示例:适配Python3.9 Linux x86_64环境
    pip install -t vendor --platform manylinux2014_x86_64 --python-version 39 --only-binary=:all: foo
    

内容的提问来源于stack exchange,提问作者abergmeier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:57:03