关于python:Flask – ImportError:没有名为migrate.versioning的模块

Flask - ImportError: No module named migrate.versioning

我正在完成一个flask教程,并试图运行一个创建数据库的脚本,而不是通过命令行来完成。它使用sqlAlchemy migrate包,但是当我尝试运行脚本时,它会给出一个importError。

这是终端输出:

1
2
3
4
5
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脚本:

1
2
3
4
5
6
7
8
9
10
11
12
#!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))

这是它引用的配置文件:

1
2
3
4
5
6
#!/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

谢谢你的帮助


1
pip install sqlalchemy==0.7.9

1
pip install sqlalchemy-migrate==0.7.2

或者,该烧瓶的whooshcalchemy==0.55A可以解决问题。


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


正如前面@boppreh所说

1
ImportError: No module named migrate.versioning

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

我也遇到了同样的问题,并且建立了正确的环境。但这个错误仍然没有解决。

对我有用的是从PIP安装sqlAlchemy迁移包。激活环境后,我运行了以下代码来安装它:

1
pip install sqlalchemy-migrate

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


运行:

1
   easy_install Flask-SQLAlchemy

安装烧瓶

1
   sudo pip install flask-migrate

安装烧瓶迁移


我也有同样的问题——"没有一个名为migrate.versioning的模块",而且一切都比我们所说的容易得多,您需要执行"run"命令。文件:db_create.py或文件:db_migrate.py如果您使用pycharm(而不是从终端)。您将得到预期的输出:"新迁移另存为D:…有我的路径…"microblogdb_repositor/versions/001_migration.py当前数据库版本:1"


我认为这个错误可能是由于几个不明确的原因而出现的,我想添加另一个我经历过的原因:我在正确安装sqlacalchemy migrate时也遇到了同样的错误,猜猜怎么着,这并不是因为我将迁移脚本文件命名为migrate.py,这与迁移包产生了一些冲突。实际上,Pycharm警告我说:
"Import resolves to its containing file... This inspection detects names that should resolve but don't."
我将迁移脚本重命名为db_migrate.py,一切都开始正常工作。我可以理解是什么问题,因为我有另一个具有相同设置的项目,但是迁移sqlacalchemy工作得很好,唯一的区别是文件名…希望有一天能帮上忙…