我正在使用Flask webapp。我使用ZODB与Flask-ZODB扩展。 我有一个小脚本来初始化我的数据库上的一些默认对象,例如用户和用于存储用户将提交的一些数据的“索引”。
结构如下:
myproject/
|- myproject/
| |- __init__.py
| |- models.py
| |- views.py
| |- database/
| |- static/
| |- templates/
|
|- run.py
|- setup.py
安装脚本如下所示:
[setup.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();
模型文件
init 文件
[_ 初始化 _。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
[models.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)
所以问题是,当我想运行我的设置时,我收到此导入错误:
Traceback(最近一次调用最后一次):文件“setup.py”,第3行,in 来自myproject.models导入Usuario文件“S:\ Fuentes \ workspace \ Python \ flaskapps \ myproject-app \ myproject__init __。py”, 第1行,in 来自flask导入Flask ImportError:没有名为flask的模块
当我运行应用程序时,一切正常,我从控制台运行脚本时只有这个问题。 (我在Windows上)
我关闭这个,这是一个虚拟问题。碰巧的是,如果你只使用setup.py或c:\ Python27 \ python.exe setup.py,它就不会查看活动venv的sitePackages文件夹。解决方案是将其称为> python.exe setup.py