Flask - ImportError: нет модуля с именем migrate.versioning
Я работаю над учебником по фляге и пытаюсь запустить script, который создает базу данных, а не выполняет ее через командную строку. Он использует пакет миграции SQLAlchemy, но когда я пытаюсь запустить script, он дает ImportError.
Это вывод терминала:
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 script:
#!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-инфо
Любая помощь оценена
Ответы
Ответ 1
ImportError: No module named migrate.versioning
Вероятно, модуль не установлен. Убедитесь, что он установлен в правильной виртуальной среде, он активирован (вы запустили activate
script в этой среде), и выбранный двоичный код Python фактически использует эту среду (то есть вы используете Python2, а не Python3).
Ответ 2
pip install sqlalchemy==0.7.9
и
pip install sqlalchemy-migrate==0.7.2
и
необязательно эта колба-whooshalchemy == 0.55a должна решить проблему
Ответ 3
Как уже сказал @BoppreH
ImportError: No module named migrate.versioning
означает, что модуль с именем 'migrate' не установлен в вашей виртуальной среде или вашей системе. Сначала убедитесь, что вы используете подходящую среду и активируете ее с помощью активировать script.
У меня была такая же проблема и была настроена правильная среда. Но все же ошибка не была решена.
Для меня работала установка пакета sqlalchemy-migrate из pip. После активации моей среды я выполнил следующий код, чтобы установить его:
pip install sqlalchemy-migrate
Ответ 4
flask/bin/pip install flask-sqlalchemy
без определения того, что версия отлично работает для меня.
Ответ 5
Я думаю, что эта ошибка может появиться по нескольким неясным причинам, я хотел бы добавить еще одно, что я испытал:
У меня была такая же точная ошибка при правильной установке sqlalchemy-migrate, и угадайте, что это не сработало, потому что у меня был с именем файл миграции script как migrate.py
, это создало некоторый конфликт с пакетом migrate.
На самом деле PyCharm предупредил меня с этим сообщением:
"Import resolves to its containing file... This inspection detects names that should resolve but don't."
я переименовал перенос script как db_migrate.py
, и все начало работать нормально.
Я мог понять, в чем проблема, потому что у меня был другой проект с идентичной настройкой, но с migrate-sqlalchemy работал отлично, и единственное различие действительно в том, что имя файла...
Надеюсь, это может помочь кому-то в один прекрасный день...
Ответ 6
У меня была такая же проблема - "Нет модуля с именем migrate.versioning", и все намного проще, чем мы говорим, вам нужно выполнить команды "run",
файл: db_create.py или файл: db_migrate.py, если вы используете PyCharm (не из терминала). И вы получите ожидаемый результат: "Новая миграция сохранена как D:... есть мой путь... \microblog\db_repositort/versions/001_migration.py
Текущая версия базы данных: 1 "