热门标签:
Q:

Flask-Script:来自flask。_compat import text_type ModuleNotFoundError:No module named'flask._公司'

使用Flask-Script时,我在导入管理器时收到错误。

我已经安装了pip Flask和Flask-Script。 我该如何解决这个问题?

manage.py

from flask_script import Manager

from main import app

manager = Manager(app)

@manager.command
def hello():

    print ("hello")

if __name__ == "__main__":
    manager.run()

main.py

from flask import Flask

app = Flask(__name__)

错误

(venv) raul@raul-PC:~/Proyectos Python/flask_script$ python3 manage.py hello
Traceback (most recent call last):
  File "manage.py", line 1, in <module>
    from flask_script import Manager
  File "/home/raul/Proyectos Python/flask_script/venv/lib/python3.8/site-packages/flask_script/__init__.py", line 15, in <module>
    from flask._compat import text_type
ModuleNotFoundError: No module named 'flask._compat'
原网址
A:

您是否将Flask更新到2.0.0版本? 将Flask降级到版本1.1.2,它会工作。

编辑
而不是与Flask-Script一起使用,您可以简单地使用以下命令:

flask db init初始化数据库
flask db migrate迁移新更改
flask db upgrade来升级等等。

所有回答

共 9 条

author avatar

1-我通过选择我的解释器并安装libs,例如flask-script本身,Flaskflask-migrate,在flask-script上manualy安装了模块。

2-关于这个特定的错误:from flask._compat import text_type
ModuleNotFoundError: No module named 'flask._compat'-

它的发生是因为python在Flask._compat目录上搜索并且它不在那里,所以我改变如下:(onflask_script/__init__.py

哪里:

from ._compat import text_type在原始flask-script文件上

到 :

from flask_script._compat import text_type

那就成功了!!

author avatar

我删除了"从flask_script导入管理器" 并从我的主应用程序中删除了"manager=Manager(app)"。

并从要求。txt文件。

在github上找到: flask_script不是flask本身,而是由其他人编写的(dead-repo archived)flask扩展。

现在我的程序运行Flask2.0.1

author avatar

我安装了Flask1.1.4

pip install "Flask==1.1.4"

还有werkzeug

pip install "werkzeug==1.0.1"
author avatar

降级到flask-script==2.0.5对我有用,即使在使用Flask==2.0.2时也是如此。

author avatar

Flask-Script不太可能为Flask2创建兼容版本。x或之后的任何其他版本从它们的发布历史和上次发布判断。 Miguel Grinberg在他的帖子中解释了这一点,并且在Flask0.11中引入Flask CLI可能导致了Flask-Script的死亡(他没有错,日期确实证实了这一点)。

而且您不需要从用于构建应用程序的任何技术的最新版本降级。 你为什么要这么做? 较新版本带有新功能,更好的安全性,提高效率等。 为什么要坚持使用四年前去世的图书馆?

你应该做的(没有捷径的方法)是转移到Flask CLI,使用我上面链接的Miguel Grinberg帖子,并继续享受Flask2.0的新功能。X.George Studenko关于同样的中等文章也可能对您有所帮助。 这是一个更长,更棘手的解决方案,但最终更有价值。

祝你好運!.

author avatar

我尝试Flask-Script-

  1. 我的要求。txt是

     click==7.1.2
     colorama==0.4.4
     Flask==1.1.4
     Flask-Script==2.0.6
     itsdangerous==1.1.0
     Jinja2==2.11.3
     MarkupSafe==2.0.1
     Werkzeug==1.0.1
    
  2. app.py

     from flask import Flask
     app = Flask(__name__)
    
     if __name__ == "__main__":
         app.run(debug=True)
    
  3. manage.py

     from flask_script import Manager
     from app import app
    
     manager = Manager(app)
    
     @manager.command
     def hello():
         print('test')
    
     if __name__ == "__main__":
         manager.run()
    
  4. 运行命令-python manage.py 你好

  5. 我的输出显示为结果"测试"

author avatar

降级Flask为我工作

更新的要求。txt与 Flask==1.1.4

author avatar

您可以尝试降级您的flask版本。

如果你使用pip,那么它应该是:

  1. python3-m pip卸载flask
  2. python3-m pip安装flask==1.1.4
author avatar

作为降级Flask或Flask-Script的替代方案,我使用了

from flask_login._compat import text_type

来自flask_login包,无论如何,我在我的项目的依赖项中。

相似问题