2014-02-08 37 views
14

我正在通过烧瓶教程,试图运行一个脚本来创建数据库,而不是通过命令行执行。它使用SQLAlchemy-migrate包,但是当我尝试运行脚本时,它会给出一个ImportError。Flask - ImportError:没有名为migrate.versioning的模块

这是终端输出:

Sean:app seanpatterson$ python ./db_create.py 
Traceback (most recent call last): 
    File "./db_create.py", line 2, in <module> 
    from migrate.versioning import api 
ImportError: No module named migrate.versioning 

这是db_create.py脚本:

#!flask/bin/python 
from migrate.versioning import api 
from config import SQLALCHEMY_DATABASE_URI 
from config import SQLALCHEMY_MIGRATE_REPO 
from app import db 
import os.path 
db.create_all() 
if not os.path.exists(SQLALCHEMY_MIGRATE_REPO): 
    api.create(SQLALCHEMY_MIGRATE_REPO, 'database repository') 
    api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO) 
else: 
    api.version_control(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO,  api.version(SQLALCHEMY_MIGRATE_REPO)) 

这是在配置文件中所引用:

#!/usr/bin/env python 
import os 
basedir = os.path.abspath(os.path.dirname(__file__)) 

SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db') 
SQLALCHEMY_MIGRATE_REPO = os.path.join(basedir, 'db_repository') 

本申请是与虚拟环境一起运行。这是涉及到它,我已经在环境中安装的模块:

sqlalchemy_migrate-0.7.2-py2.7.egg-信息

任何帮助表示赞赏

回答

7

ImportError: No module named migrate.versioning可能意味着该模块未安装。确保它已经安装在正确的虚拟环境中,它被激活(您在该环境中运行activate脚本),并且选定的Python二进制文件实际上正在使用该环境(即,您正在使用Python2而不是Python3)。

+1

是的,你是完全正确的,我也有安装在虚拟环境中的所有沿模块。卫生署! –

1

flask/bin/pip install flask-sqlalchemy没有定义的版本对我工作得很好。

21
pip install sqlalchemy==0.7.9 

pip install sqlalchemy-migrate==0.7.2 

任选此烧瓶-whooshalchemy == 0.55A应该解决的问题

2

正如前面@BoppreH

ImportError: No module named migrate.versioning 

所述意味着该模块名为'migrate'的虚拟环境或系统中未安装。首先确保您使用的是正确的环境,并使用激活脚本激活它。

我有同样的问题,并设置了正确的环境。但仍然错误没有解决。

对我来说有效的是从pip安装sqlalchemy-migrate包。 激活我的环境后,我跑到下面的代码进行安装:

pip install sqlalchemy-migrate 
0

我觉得这个错误可能弹出了一些不知名的原因,我想补充另一个我经历: 我有同样的在正确安装sqlalchemy-migrate的情况下发生了确切的错误,并猜测它不工作,仅仅因为我的命名为迁移脚本文件为migrate.py,这与migrate软件包产生了一些冲突。 事实上PyCharm警告我这个消息:
"Import resolves to its containing file... This inspection detects names that should resolve but don't."
改名迁移脚本db_migrate.py,一切都开始正常工作。 我可以理解是什么问题,因为我有一个相同的设置另一个项目,但与migrate-sqlalchemy完美的工作,唯一的区别确实是该文件名... 希望这可能有助于某人...

0

我有同样的问题 - “没有名为migrate.versioning的模块”,并且一切都比我们谈论的要容易得多,您需要执行命令“run” file:db_create.py或file:db_migrate.py如果你使用PyCharm(不是来自终端)。你将有预期的输出:“保存为d的新移民:......有我的路... \微博\ db_repositort /版本/ 001_migration.py 当前数据库版本:1”

+0

您好ALexandr,如果您可以格式化您的答案,所以要运行的命令,文件名和预期的输出,可以很容易区别于文本。 – rafahoro

+0

谢谢,我已经完成了 –

0

运行:

easy_install Flask-SQLAlchemy 

安装烧瓶SQLAlchemy的

sudo pip install flask-migrate 

安装烧瓶迁移

相关问题