我有一个正在开发的 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