烧瓶 - 导入错误:没有名为 migrate.version 的模块



我正在学习一个烧瓶教程,并尝试运行一个创建数据库的脚本,而不是通过命令行进行操作。它使用 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.蛋信息

任何帮助表示赞赏

pip install sqlalchemy==0.7.9 

pip install sqlalchemy-migrate==0.7.2 

可选这个烧瓶嗖嗖

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

正如@BoppreH之前所说

ImportError: No module named migrate.versioning

表示名为"迁移"的模块未安装在虚拟环境或系统中。首先,请确保您使用的是正确的环境,并且使用激活脚本将其激活

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

对我有用的是从 pip 安装 sqlalchemy-migrate 包。激活我的环境后,我运行以下代码来安装它:

pip install sqlalchemy-migrate
没有

定义版本的flask/bin/pip install flask-sqlalchemy对我来说效果很好。

运行:

   easy_install Flask-SQLAlchemy

安装 Flask-SQLAlchemy

   sudo pip install flask-migrate

安装烧瓶迁移

我认为

此错误可能会由于几个晦涩的原因而弹出,我想添加另一个我遇到的错误:在正确安装 sqlalchemy-migrate 时,我遇到了完全相同的错误,你猜怎么着,它不起作用,因为我将迁移脚本文件命名migrate.py ,这造成了与迁移包的一些冲突。事实上,PyCharm用这条消息警告我:
"Import resolves to its containing file... This inspection detects names that should resolve but don't."
我将迁移脚本重命名db_migrate.py,一切开始正常工作。我可以理解问题所在,因为我有另一个设置相同的项目,但迁移SQL炼金术运行良好,唯一的区别确实是文件名......希望有一天这可能会帮助某人...

我遇到了同样的问题 - "没有名为 migrate.version 的模块",一切都比我们谈论的要容易得多,您需要执行命令"运行"文件:db_create.py或文件:如果您使用 PyCharm(而不是从终端),则db_migrate.py。您将获得预期的输出:"新迁移另存为 D:...有我的路...\微博\db_repositort/版本/001_migration.py当前数据库版本:1"

最新更新