【问题标题】:Flask - ImportError: No module named migrate.versioningFlask - ImportError:没有名为 migrate.versioning 的模块
【发布时间】:2014-03-05 23:35:22
【问题描述】:

我正在完成一个烧瓶教程,并试图运行一个创建数据库的脚本,而不是通过命令行进行。它使用 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

任何帮助表示赞赏

【问题讨论】:

    标签: python flask importerror flask-sqlalchemy flask-migrate


    【解决方案1】:

    运行:

       easy_install Flask-SQLAlchemy
    

    安装 Flask-SQLAlchemy

       sudo pip install flask-migrate
    

    安装烧瓶迁移

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题 - “没有名为 migrate.versioning 的模块”,一切都比我们说的容易得多,您需要执行命令“运行” 文件:db_create.py 或文件:db_migrate.py 如果您使用 PyCharm(不是来自终端)。您将得到预期的输出:“新迁移保存为 D:...这是我的路径...\microblog\db_repositort/versions/001_migration.py 当前数据库版本:1"

      【讨论】:

      • 嗨,ALexandr,如果你可以格式化你的答案,那么运行的命令、文件名和预期的输出可以很容易地与文本区分开来。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        正如@BoppreH 之前所说的

        ImportError: No module named migrate.versioning
        

        表示名为“migrate”的模块未安装在您的虚拟环境或系统中。首先确保您使用的是正确的环境,并且它是使用 activate 脚本激活的。

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

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

        pip install sqlalchemy-migrate
        

        【讨论】:

          【解决方案5】:

          flask/bin/pip install flask-sqlalchemy 没有定义版本对我来说很好。

          【讨论】:

            【解决方案6】:
            pip install sqlalchemy==0.7.9 
            

            pip install sqlalchemy-migrate==0.7.2 
            

            这个 flask-whooshalchemy==0.55a 应该可以解决问题

            【讨论】:

              【解决方案7】:

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

              【讨论】:

              • 是的,你完全正确,我确实一直在虚拟环境中安装了模块。哇!
              猜你喜欢
              • 1970-01-01
              • 2019-12-01
              • 2014-05-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多