2014-02-08 3 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

Да вы совершенно правы, я имел модуль, установленный в виртуальной среде все вместе. Doh! –

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 

означает, что модуль named «migrate» не установлен в вашей виртуальной среде или вашей системе. Сначала убедитесь, что вы используете подходящую среду и активируете ее с помощью сценария , активирующего.

У меня была такая же проблема, и у меня была правильная настройка окружения. Но все же ошибка не была решена.

Для меня работала установка sqlalchemy-migrate пакет от pip. После активации моего окружения, я побежал следующий код, чтобы установить его:

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

Hi ALexandr, если вы можете отформатировать свой ответ, поэтому команды для запуска, имена файлов и ожидаемый вывод можно легко отличить от текста. – rafahoro

+0

Спасибо, я сделал –

0

пробег:

easy_install Flask-SQLAlchemy 

установить колбовую SQLAlchemy

sudo pip install flask-migrate 

для установки колбы мигрируют