Выполнение отдельного модуля в Flask завершается неудачно из-за невозможности найти пакет - PullRequest
0 голосов
/ 22 апреля 2020

Кажется, мне не хватает понимания того, как именно Пакет должен работать и вести себя.

Наличие Flask приложения со следующей структурой каталогов:

$ tree -L 2

|-- demo-app.py
|-- footballapp
|   |-- __init__.py
|   |-- footballers.sqlite
|   |-- forms.py
|   |-- models.py
|   |-- routes.py
|   |-- templates
|   `-- tests.py
`-- requirements.txt

Все Работая, как и ожидалось, когда я запускаю приложение с demo-app.py, оно просто выставляет

from footballapp import app
app.run(debug=True)

При запуске tests.py я вернулся ModuleNotFoundError: No module named 'footballapp'.

tests.py

import unittest
from footballapp import app

class DummyTest(unittest.TestCase):
    pass

Я ожидаю, что интерпретатор сможет определить, что footballapp является пакетом, а init предоставляет необходимый app объект.

cat __init__.py
import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
SECRET_KEY = os.urandom(32)


app = Flask(__name__)
app.config['SECRET_KEY'] = SECRET_KEY
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///footballers.sqlite"


db = SQLAlchemy(app)
from footballapp import routes
from footballapp.models import User, Team

db.create_all()

Ошибка упоминает модуль, а я рассматриваю футбол как пакет. Также я имею в виду отдельный модуль в названии вопроса, потому что тесты выполняются отдельно от Flask. Где не хватает моего понимания?

...