我的烧瓶应用是位于app
/Users/gexinjie/Codes/MyProject/xinnjie_blog
的包
文件树就像这样
xinnjie_blog
├── app
| ├── __init__.py
│ ├── config.py
│ ├── exceptions.py
│ ├── model.py
│ ├── model_sqlalchemy.py
│ ├── static
│ ├── templates
│ ├── util.py
│ └── views
├── manage.py
我将其导出为PATHONPATH
,因此manage.py
可以导入app
echo $PATHONPATH
/Users/gexinjie/Codes/MyProject/xinnjie_blog
并导出FLASK_APP
echo $FLASK_APP
manage.py
当前目录为/Users/gexinjie/Codes/MyProject/xinnjie_blog
pwd
/Users/gexinjie/Codes/MyProject/xinnjie_blog
这是manage.py
import click
from app import create_app
app = create_app('development')
@app.cli.command()
def initdb():
click.echo('Init the db...')
这里是app.__init__.py
from flask import Flask
from .model_sqlalchemy import db
def create_app(config_name='default'):
app = Flask(__name__)
... # init
return app
但是如果我执行flask initdb
,我会收到此错误:
Usage: flask [OPTIONS] COMMAND [ARGS]...
Error: No such command "initdb".
如果我执行flask run
,我会
Usage: flask run [OPTIONS]
Error: The file/path provided (manage) does not appear to exist. Please verify the path is correct. If app is not on PYTHONPATH, ensure the extension is .py
为什么找不到manage.py?我该如何解决呢?
(实际上,manage.py
本身就有烧瓶应用程序时效果很好)
# manage.py
# this work well
app = Flask(__name__) # not app = create_app('development')
谢谢
答案 0 :(得分:0)
感谢@Adam,卸载Anaconda后问题解决了。
因为我一直在Pycharm命令工具上测试manage.py
,而且flask
是由Anaconda(python版本3.6)安装的,所以它可能缺少一些扩展(通常我在终端上使用python3.5) )。我认为在导入过程中会出现问题。
烧瓶命令工具抱怨“找不到应用程序”,但真正的问题是导入错误。所以这很混乱。
“普遍”解决方案:
所以如果你像我一样遇到这种问题,我建议你先检查你的应用程序的位置(尝试相对路径和绝对路径),相对路径可能会导致定位当你不在正确的工作目录时出现问题。建议使用绝对路径。
如果关于路径的所有事情都进展顺利,请确保您的应用所需的所有软件包都已安装并且可以导入。如果你正在使用某种类型的虚拟环境或类似的东西(在我的情况下,我使用缺少一些烧瓶扩展的其他版本的python),可能是导致错误导致flask
抱怨。
希望这可以帮到你。