1

我有一个正在开发的 Flask webapp。我使用带有 Flask-ZODB 扩展的 ZODB。我有一个小脚本来初始化我的数据库上的一些默认对象,例如用户和将用于存储用户将提交的一些数据的“索引”。

结构如下:

myproject/
   |- myproject/
   |    |- __init__.py
   |    |- models.py
   |    |- views.py
   |    |- database/
   |    |- static/
   |    |- templates/
   |
   |- run.py
   |- setup.py

安装脚本如下所示:

[设置.py]

from myproject.models import Usuario
from ZODB.DB import DB
from ZODB.FileStorage import FileStorage
from flask.ext.zodb import BTree
import transaction

# add admin users
superU = Usuario("somemail@gmail.com", "xxx")
admin  = Usuario("admin@gmail.com", "yyy")

#create indexes
storage = FileStorage('myproject/database/db.fs')
conn = DB(storage)
db = conn.open().root()

for idx in ['usuarios', 'proyectos', 'informes', 'actividades', 'objetivos', 'usuarios']:
    if not idx in db.keys():
        db[idx] = BTree()

db['usuarios'][superU.id] = superU
db['usuarios'][admin.id] = admin

for usuario in db['usuarios'].values():
    print "Usuario '", usuario.email, "' added..."

transaction.commit();
conn.close();

和模型文件

初始化文件_

[_初始化_.py]

from flask import Flask
from models import Usuario

# configuration
DEBUG = True
SECRET_KEY = 'development key'
USERNAME = 'admin'
PASSWORD = 'default'

app = Flask(__name__)
app.config.from_object(__name__)

from basedatos import Coleccion, Catalogo
coleccion = Coleccion(app)
catalogo  =  Catalogo()

import myproject.views

[模型.py]

from flask import current_app as app
from flask.ext.zodb import Object, List, Dict
from flask_login import UserMixin
from itsdangerous import URLSafeSerializer
from hashlib import sha256


class Usuario(UserMixin):
    """
        Usuarios de la aplicacion
    """
    def __init__(self, email, password):
        self.email = email
        self.passwordHash = sha256(password).hexdigest()
        self.id = email

    def get_auth_token(self):
        return URLSafeSerializer(app.secret_key, salt='id salt').dumps(self.id+self.passwordHash)

所以问题是,当我想运行我的设置时,我收到了这个导入错误:

回溯(最近一次调用):文件“setup.py”,第 3 行,从 myproject.models 导入 Usuario 文件“S:\Fuentes\workspace\Python\flaskapps\myproject-app\myproject__init__.py”,第 1 行, in from flask import Flask ImportError: No module named flask

当我运行应用程序时,一切正常,我只有在从控制台运行脚本时才会遇到这个问题。(我在 Windows 上)


我关闭了这个,这是一个 virtualenv 问题。碰巧的是,如果您只执行 setup.py 或 c:\Python27\python.exe setup.py 它不会在活动 venv 的 sitePackages 文件夹中查找。解决方案是直接调用它 > python.exe setup.py

4

0 回答 0