2014-03-19 4 views
3

Я пытаюсь использовать mixer для генерации тестовых данных для веб-сайта, оснащенного Flask + SQLAlchemy.Использование Mixer с Flask-SQLAlchemy

Я создал файл с именем generate_test_data.py в корневом каталоге моего проекта, который выглядит следующим образом:

# -*- coding: utf-8 -*- 

import app 
from mixer.backend.flask import mixer 
from models import * 

def generate_test_data(): 
     user = mixer.blend(Users) 

if __name__ == "__main__": 
     generate_test_data() 

Тем не менее, каждый раз, когда я бегу файл я получаю следующую ошибку:

Traceback (most recent call last): 
    File "generate_test_data.py", line 3, in <module> 
    import app 
ImportError: No module named app 

Я делаю это с использованием правильного virtualenv.

Update

Моя структура проекта выглядит следующим образом:

/ 
- generate_test_data.py 
- app/ 
-- __init__.py 
-- models.py 

** Обновление **

Мой __init__.py:

# -*- coding: utf-8 -*- 

from flask import Flask 
from flask.ext.sqlalchemy import SQLAlchemy 
from flask.ext.uwsgi_websocket import GeventWebSocket 
from config import REDIS_HOST, REDIS_PORT 
import redis 


app = Flask(__name__) 
db = SQLAlchemy(app) 
ws = GeventWebSocket(app) 

POOL = redis.ConnectionPool(host=REDIS_HOST, port=REDIS_PORT, db=0) 
redis = redis.Redis(connection_pool=POOL) 

from app import views, models 
+0

Вы можете поделиться кодом '__init __. Py'? Как вы создаете приложение для флэков? Я предполагаю, что ваша папка проекта называется приложением /, в то время как ваше приложение фляги также называется приложением. Некоторые конфликты происходят. Лучше переименовать папку проекта, например сказать «myapp», а затем сделать «из приложения импорта myapp» – codegeek

+0

Добавлен код для моего '__init __. Py' – ruipacheco

ответ

0

Я бы повторно структурировать ваши проектная структура как:

myproject/ 
    generate_test_data.py 
    __init__.py 
    models.py 

Тогда в вашем generate_test_data.py, вы можете просто сделать

from myproject import app 

Это будет лучше, потому что вы удаление любых конфликтов имен. Кроме того, вы явно импортируете свою переменную приложения, которую вы действительно хотите. Вы можете, конечно, назвать «myproject» тем, что хотите, но не называете его «app» безопасным.

Смежные вопросы