Кажется, мне не хватает понимания того, как именно Пакет должен работать и вести себя.
Наличие 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. Где не хватает моего понимания?