![](/img/trans.png)
[英]Gunicorn import error: url_for not found in flask, but native flask run works fine
[英]flask run not finding module import but works with gunicorn
啟動 Flask 時出現模塊未找到錯誤,如下所示:
$ python src/app/main.py
$ python src/app/main.py
Traceback (most recent call last):
File "/home/james/code/webapp/src/app/main.py", line 3, in <module>
from app.web import app_config
ModuleNotFoundError: No module named 'app'
目錄:
src
|- app
|- |- __init__.py
|- |- main.py
|- |- web
|- |- |- __init__.py
|- |- |- app_config.py
主要.py:
from flask import Flask
from app.web import app_config
app = Flask(__name__)
@app.get("/ping")
def ping():
return "pong"
if __name__ == "__main__":
app.run(debug=True)
但是如果我從 gunicorn 開始,那就沒問題了:
$ gunicorn app.main:app
[2022-01-22 15:28:58 +0000] [148] [INFO] Starting gunicorn 20.1.0
[2022-01-22 15:28:58 +0000] [148] [INFO] Listening at: http://127.0.0.1:8000 (148)
[2022-01-22 15:28:58 +0000] [148] [INFO] Using worker: sync
[2022-01-22 15:28:58 +0000] [150] [INFO] Booting worker with pid: 150
為什么直接從終端運行 Flask 不讓它找到更高級別的目錄模塊?
由於Python 的模塊搜索路徑,找不到app
模塊。 它嘗試從main.py
的目錄導入。
如果您不想更改任何內容,請cd
進入src/
目錄,然后從那里使用“模塊方法”運行應用程序:
$ python -m app.main
第二種方法: from app.web import app_config
行更改為from web import app_config
,然后原來的python src/app/main.py
的相對導入將起作用,因為現在它從main.py
。
第三個選項:將src
目錄的完整路徑添加到PYTHONPATH
env var。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.