繁体   English   中英

使用本地依赖项部署 GCP Cloud 功能

[英]Deploy GCP Cloud function with local dependencies

我一直在尝试部署具有一些私有依赖项 ( 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

在此处输入图片说明 我还更新了 process.py 文件以导入 pyodbc 模块,如下所示,

import libs.pyodbc

请注意:我使用 GCP docs 安装pyodbc包并使用https://cloud.google.com/functions/docs/writing/specifying-dependencies-python放入 libs 最重要的是,我还requirements.txt导入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 存储桶。 我正在尝试仅使用 Cloud Functions 来实现所有目标。 谢谢

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM