簡體   English   中英

flask run 不起作用,但 python server.py 起作用了! 環境變量集

[英]flask run does not work but python server.py does! Environment vars set

當我嘗試使用flask run運行我非常簡單的 Flask 應用程序時,它不起作用,但是當我cd srcpython server.py它確實起作用。

文件結構:

my_project
|____init__.py
|
|__src
|  |____init__.py
|  |__server.py
|  |__chat.py
|
|__test
|  |____init__.py
|  |__test_server.py
|  |__test_chat.py
|
|__FLASK_ENV_VARS.sh

server.py

from flask import Flask, jsonify
import chat

api = Flask(__name__)


@api.route('/')
def root():
    message = chat.say_hello()
    return jsonify(message=message)


if __name__ == '__main__':
    api.run(debug=True)

為了讓測試通過,我需要from src import chat 當我將其保留為import chat ,服務器會在我嘗試python server.py但不是flask run (它不會以任何一種方式運行導入聊天)時運行。 有趣的是,當import chatfrom src import chat消失時,我在 IDE 的import chat下看到一條紅色波浪線。

test_server.py

import pytest


from src.server import api


def test_route(client):
    response = client.get('/')
    assert response.status_code == 200
    expected_data = b'{"message":"Welcome message here"}\n'
    assert response.data == expected_data



@pytest.fixture
def client():
    api.testing = True
    client = api.test_client()
    return client 

環境變量shell腳本的內容是

export FLASK_ENV=development
export FLASK_DEBUG=1
export FLASK_APP=server.py

我已經嘗試使FLASK_APP src.server.pyserver.py ,目前都沒有工作。 當然,我記得運行 shell 腳本並回顯變量以確保它們已更改。

我從flask run得到的錯誤是flask.cli.NoAppException: Could not import "my_project.server".

當我cd srcflask run我得到flask.cli.NoAppException: While importing "my_project.src.server", an ImportError was raised:

問題,我懷疑在於聊天的導入方式。 測試僅使用from src import chat運行。 當我運行python server.py我必須只import chat否則它不起作用。 我得到ModuleNotFoundError: No module named 'chat'作為堆棧跟蹤的一部分或ModuleNotFoundError: No module named 'src'取決於使用的導入樣式。 我不確定我在這里做錯了什么。 我傾向於認為from src import chat是正確的,因為這是使測試通過的原因,但是我根本無法使其正常工作。

你有沒有試過$env:FLASK_APP = "server.py"

也試試這樣的東西, export FLASK_APP=my_project/src/server.py; flask run export FLASK_APP=my_project/src/server.py; flask run

你也可以app = Flask (__name__) in __init__.py and then execute flask run提到app = Flask (__name__) in __init__.py and then execute flask run

通過將server.py中有問題的導入更改為

from my_project.src import chat

暫無
暫無

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

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