簡體   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