ModuleNotFoundError:没有名为“ flask_migrate”的模块

时间:2019-02-14 15:42:59

标签: python flask flask-migrate

我是python + flask的新手,并且想使用flask创建一个网站。 IDE是Visual Studio 2017,我可以使用flasky.py作为启动文件成功运行该程序。但是在CLI中,我经常遇到此错误。

(sms) C:\Document\Workspace\smsserver\smsserver>flasky.py
Traceback (most recent call last):
  File "C:\Document\Workspace\smsserver\smsserver\flasky.py", line 3, in <module>
    from flask_migrate import Migrate
ModuleNotFoundError: No module named 'flask_migrate'

代码为:

import os
from os import environ
from flask_migrate import Migrate
from app import create_app, db
import app.models

app = create_app(os.getenv('FLASK_CONFIG') or 'default')
migrate = Migrate(app, db)
....

这里是虚拟机中安装的模块。

(sms) C:\Document\Workspace\smsserver\smsserver>pip freeze
alembic==1.0.7
...
Flask==1.0.2
Flask-Bootstrap==3.3.7.1
Flask-Mail==0.9.1
Flask-Migrate==2.3.1
Flask-SQLAlchemy==2.3.2
....
SQLAlchemy==1.2.17
sqlalchemy-migrate==0.12.0
sqlparse==0.2.4
....

有什么我想念的吗?还是任何模块冲突?

4 个答案:

答案 0 :(得分:0)

在CLI中,您需要按以下方式运行脚本:

python flasky.py

当您刚运行flasky.py时,Windows将打开脚本,并注册该可执行文件以处理系统上的.py.扩展名,该扩展名是系统范围的Python解释器(即,与虚拟机关联的解释器)环境)。

答案 1 :(得分:0)

尝试重新安装pip安装Flask-Migrate。这对我有用

答案 2 :(得分:0)

在使用 python 虚拟环境时要小心:

python3 -m venv .venv

通过以下方式激活私有/本地python环境后:

source .venv/bin/activate

您的 PATH 可以正确更新,但 shell 哈希可能仍指向旧的 python/flask 位置!(未安装模块的位置)

因此,要解决此问题,您可能只需要通过键入以下命令在 shell 中重新散列:

hash -r

它为我解决了同样的问题。

答案 3 :(得分:0)

  1. pip install Flask-Script==2.0.5

  2. pip install Flask-Migrate==1.2.0

  3. 在根目录下创建 manage.py 文件并添加以下代码:

    from flask_script import Manager
    
    from <your app name> import app,db
    
    import os
    
    from config import Config
    
    from flask_migrate import Migrate,MigrateCommand
    
    from flask import Flask
    
    from flask_sqlalchemy import SQLAlchemy
    
    
    app.config.from_object(Config)
    
    migrate = Migrate(app, db)
    
    manager = Manager(app)
    
    manager.add_command('db', MigrateCommand)
    
    if __name__ == '__main__':
    
        manager.run()
    
  4. 应用以下命令:

    python manage.py db init 
    python manage.py db migrate
    python manage.py db upgrade