docker, дуэль flask, ValueError: попытка относительного импорта за пределы пакета верхнего уровня - PullRequest
0 голосов
/ 20 февраля 2020

долгое время слушатель, впервые звонящий.

Я пытался понять это сам, и я немного застрял, есть множество примеров и объяснений, большинство из которых, кажется, просто двигаются пакет включает все модули, но я думаю, что dockerizing немного усложняет, или, может быть, я?

Мой проект состоит из нескольких компонентов Python / Flask, Docker (docker -compose ), Мариадб. Я строю flask admin и flask api поверх источника данных Mariadb. Изначально у меня был docker -композитный запуск flask, обслуживающий API и Admin в одном пакете. Затем мне пришла в голову блестящая идея разделения двух сервисов, и в процессе я хотел уменьшить дублирование скриптов, таких как мои модели и некоторую общую конфигурацию.

project
- api
--_init_.py
--...
- admin
--_init_.py
--...
- models
--_init_.py
--roles.py
--users.py
--...
- config
--_init_.py
--development.py
--...
Dockerfile-api
Dockerfile-admin
docker-compose.yml
requirements-api.txt
requirements.admin.txt

Теперь, конечно, когда я пытаюсь получить доступ Модели от администратора. init .py Я получаю ValueError: attempted relative import beyond top-level package

Из чтения я пришел к выводу, что мне может понадобиться что-то сделать с pip, чтобы импортировать модели модулей в то время requirements читаются, но потребуется docker -компоновать для обновления контейнеров при каждой модификации моделей.

Теперь вопрос, любые идеи, оценены. Я на правильном пути, и кто-нибудь может поделиться примером, которому я могу следовать?

Admin и API init .py go что-то вроде этого

import os

# Import installed packages
from flask import Flask, Blueprint
from flask_bcrypt import Bcrypt
#from flask_cors import CORS
from flask_migrate import Migrate
#from flask_restx import Api, Resource, fields
from flask_security import Security, SQLAlchemyUserDatastore

# Import app code
from admin.core.admin import configure_admin
from admin.core.db import db
import admin.core.models # Probably needed for flask-migrate

# Import models
from .. import models
#from ..models import Role, User  # Security models

# Initialise extensions
bcrypt = Bcrypt()
migrate = Migrate()

def create_app():
    app = Flask(__name__,instance_relative_config=True)

Cheers за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...