gpt4 book ai didi

python - 部署具有本地依赖项的 GCP Cloud 函数

转载 作者:行者123 更新时间:2023-12-01 00:02:16 25 4
gpt4 key购买 nike

我一直在尝试部署具有一些私有(private)依赖项 (pyodbc) 的云函数,因为我无法通过 requirements.txt 让它工作。请注意,我不想在这里使用 Docker。所以我在这里构建的只是以下文件,

1. main.py
2. process.py ( this one use pyodbc to connect to teradata)
3. libs (folder)
3.1 pyodbc-4.0.30.dist-info (package)
3.2 pyodbc (python extension module)
3.3 __init.py__ ( this is to make this folder as module)
4.requirements.txt

enter image description here我还更新了 process.py 文件以导入 pyodbc 模块,如下所示,

import libs.pyodbc

请注意:我使用 GCP 文档来安装 pyodbc 软件包并使用 https://cloud.google.com/functions/docs/writing/specifying-dependencies-python 放入库中除此之外,我还默认导入requirements.txt

但我仍然收到如下模块错误。

Error message: Code in file main.py can't be loaded.
Did you list all required modules in requirements.txt?
Detailed stack trace: Traceback (most recent call last):
File "/env/local/lib/python3.7/site-packages/google/cloud/functions/worker.py", line 305, in check_or_load_user_function
_function_handler.load_user_function()
File "/env/local/lib/python3.7/site-packages/google/cloud/functions/worker.py", line 184, in load_user_function
spec.loader.exec_module(main)
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/user_code/main.py", line 9, in <module>
from process import process
File "/user_code/process.py", line 6, in <module>
import libs.pyodbc
ModuleNotFoundError: No module named 'libs.pyodbc'

非常感谢这里的任何线索或帮助。我在这里想要实现的目标是,从 GCP 存储桶读取 CSV 文件并通过数据帧对其进行处理,该数据帧加载到 Teradata 中并生成输出文件返回到另一个 GCP 存储桶中。我试图仅通过云功能来实现所有目标。谢谢

最佳答案

pyodbc 项目在这里可能有点特殊,因为:

  1. 该项目需要一些特定于平台的代码;
  2. 他们尚未发布最新版本的源代码发行版(仅构建了发行版)。

这就是我为使其发挥作用所做的事情。从空的 libs 目录开始,首先下载最新的可用源代码发行版:

$ pip download pyodbc --no-binary :all:

为模块创建一个目录:

$ mkdir libs/pyodbc

将源代码分发解压到模块中:

$ tar xf pyodbc-4.0.28.tar.gz -C libs/pyodbc

然后,在函数中你可以执行以下操作:

import libs.pyodbc

关于python - 部署具有本地依赖项的 GCP Cloud 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60254835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com