簡體   English   中英

Cloud Run Python - 無法導入

[英]Cloud Run Python - Unable to import

我能夠構建一個基於 FastApi 的超級簡單的 python 應用程序並將其部署到 Cloud Run。 但是,我現在需要稍微擴展應用程序,並且需要將我的功能組織到模塊中,我希望從我的 main.py 導入和引用這些模塊非常簡單

我的項目結構如下:

app <dir>
|
|-- alpha <dir>
|    |
|    |-- beta.py
|    |-- __init__.py
|
|-- main.py

在 main.py 我添加:

from alpha import beta

然后在本地運行 main.py 一切都很好,我可以調用 beta.py 中的函數:

beta.dostuff()

但是,當我嘗試將其部署到 Cloud Run 時,部署失敗並顯示:-

line 2, in <module> from alpha import beta ModuleNotFoundError: No module named 'alpha'

這讓我覺得也許我的 Dockerfile 沒有正確復制 alpha 目錄,但我的 Dockerfile 非常簡單,因為它只是:

FROM python:3.9

COPY . ./

RUN python -m pip install --upgrade pip &&\
    pip install -r requirements.txt

CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8080"]

這就是復制所有內容(不在我的 .dockerignore 中)。

當我完全刪除 /app/alpha 目錄時,刪除導入並存根對 beta.py 中函數的調用,以便一切都用完 main.py 應用程序部署並再次運行良好。

我一定錯過了一些非常愚蠢的東西。 誰能看到我可能缺少的東西? 非常感謝任何指點。

問題不在於Cloud Run ,而在於uvicorn運行應用程序的方式。 您需要更改導入語句,以便它從基本路徑引用。 將您的導入語句更改為以下內容:

from app.alpha import beta

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM