Невозможно исправить ModuleNotFoundError в Flask, несмотря на правильное соглашение.Python

Программы на Python
Ответить
Anonymous
 Невозможно исправить ModuleNotFoundError в Flask, несмотря на правильное соглашение.

Сообщение Anonymous »

Структура каталогов моей серверной части Flask выглядит следующим образом:

Код: Выделить всё

backend/
├── app/
│   ├── __init__.py
│   ├── routes/
│   │   ├── dev_routes.py
│   │   └── ...
│   └── models.py
├── tests/
│   ├── __init__.py
│   └── routes/
│       └── test_dev_routes.py
└── main.py
|__ ...

Я пытаюсь запустить файл test_dev_routes.py с помощью команды pytesttests/routes, когда я нахожусь в своей внутренней папке в терминале. Я продолжаю сталкиваться с этой ошибкой:

Код: Выделить всё

_______ ERROR collecting tests/routes/test_dev_routes.py ________
ImportError while importing test module '/Users/name/folder/project-name/project/backend/tests/routes/test_dev_routes.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
../../../../miniconda3/lib/python3.10/importlib/__init__.py:126: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
tests/routes/test_dev_routes.py:3: in 
from app.routes import dev_routes
E   ModuleNotFoundError: No module named 'app'
Вот как выглядит файл test_dev_routes.py:

Код: Выделить всё

import pytest
from flask import Flask, json
from app.routes import dev_routes
from app import create_app, db
from app.models import User, Doctor, Slot, Queue, QueueEntry

@pytest.fixture
def client():
app = Flask(__name__)
app.register_blueprint(dev_routes.api, url_prefix='/api/dev')
app.config['TESTING'] = True
with app.test_client() as client:
with app.app_context():
db.create_all()  # Create the database tables
yield client
with app.app_context():
db.drop_all()  # Clean up after tests
Мой файл dev_routes.py содержит этот api = Blueprint('dev_api', __name__), и он работает правильно, когда я получаю эту переменную API из других файлов, когда Я нахожусь в папке приложения. Я также попытался переместить папку test/routes в приложение, но все равно столкнулся с той же ошибкой. Я не понимаю, что делаю не так.
Файл __init__.py в папке моего приложения выглядит так:

Код: Выделить всё

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_cors import CORS

db = SQLAlchemy()
_app_instance = None  # Singleton instance

def create_app(config_name: str = None):
global _app_instance
if _app_instance is None:
_app_instance = Flask(__name__)
_app_instance.config.from_object('config.Test')
db.init_app(_app_instance)
CORS(_app_instance)
return _app_instance
Я попробовал установить путь Python: Export PYTHONPATH=$(pwd)/backend, и это не сработало.
Я попробовал переместить всю папку с тестами в папку приложения, но это все равно не сработало.
Я пытался сделать что-то вроде импорта backend.app.routes code> куда я поместил файл __init__.py в моей внутренней папке это все равно не сработало.

Подробнее здесь: https://stackoverflow.com/questions/793 ... convention
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»