![](/img/trans.png)
[英]Cloud Run - BUILD_DOCKER_UNKNOWN // cant import 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.