Flask - ImportError: нет модуля с именем migrate.versioning

Я работаю над учебником по фляге и пытаюсь запустить скрипт, который создает базу данных, а не через командную строку. Он использует пакет SQLAlchemy-migrate, но когда я пытаюсь запустить скрипт, он выдает ошибку 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:

#!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-info

Любая помощь приветствуется


person Takeshi Patterson    schedule 08.02.2014    source источник


Ответы (7)


ImportError: No module named migrate.versioning вероятно означает, что модуль не установлен. Убедитесь, что он установлен в правильной виртуальной среде, активирован (вы запустили скрипт activate в этой среде) и выбранный двоичный файл Python действительно использует эту среду (т. е. вы используете Python2, а не Python3).

person BoppreH    schedule 08.02.2014
comment
Да, вы совершенно правы, у меня все время был установлен модуль в виртуальной среде. Дох! - person Takeshi Patterson; 08.02.2014

pip install sqlalchemy==0.7.9 

и

pip install sqlalchemy-migrate==0.7.2 

и

опционально этот flask-whooshalchemy==0.55a должен решить проблему

person Transformer    schedule 10.06.2014

Как сказал @BoppreH ранее

ImportError: No module named migrate.versioning

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

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

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

pip install sqlalchemy-migrate
person 97amarnathk    schedule 17.05.2017

flask/bin/pip install flask-sqlalchemy без определения версии у меня работало нормально.

person Sudeep Acharya    schedule 27.04.2014

бежать :

   easy_install Flask-SQLAlchemy

установить Flask-SQLAlchemy

   sudo pip install flask-migrate

установить фляжную миграцию

person li bing zhao    schedule 08.03.2018

Я думаю, что эта ошибка может появиться по нескольким неясным причинам, я хотел бы добавить еще одну, с которой я столкнулся: у меня была точно такая же ошибка при правильной установке sqlalchemy-migrate, и угадайте, что это не сработало только потому, что я < strong>именовал файл сценария миграции как migrate.py, это создало некоторый конфликт с пакетом миграции. На самом деле PyCharm предупредил меня следующим сообщением:
"Import resolves to its containing file... This inspection detects names that should resolve but don't."
Я переименовал сценарий переноса в db_migrate.py, и все заработало нормально. Я мог понять, в чем проблема, потому что у меня был другой проект с идентичной настройкой, но с миграцией-sqlalchemy, работающей отлично, и единственная разница заключалась в том, что имя файла действительно было... Надеюсь, это может помочь кому-то однажды...

person steel00    schedule 30.10.2017

У меня была такая же проблема - «Нет модуля с именем migrate.versioning», и все намного проще, чем мы говорим, вам нужно выполнить команды «запустить» файл: db_create.py или файл: db_migrate.py, если вы используете PyCharm (не с терминала). И вы получите ожидаемый результат: "Новая миграция сохранена как D:... вот мой путь...\микроблог\db_repositort/versions/001_migration.py Текущая версия базы данных: 1"

person Alexandr Zhytenko    schedule 08.11.2017
comment
Привет, Александр, если вы можете отформатировать свой ответ, чтобы запускаемые команды, имена файлов и ожидаемый результат можно было легко отличить от текста. - person rafahoro; 08.11.2017