[英]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
項目在這里可能有點特殊,因為:
這是我為使其正常工作所做的工作。 從一個空的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.