2017-07-08 89 views
0

我的瓶的应用程序是一个名为app位于包在/Users/gexinjie/Codes/MyProject/xinnjie_blog瓶CLI无法找到脚本manage.py

文件树是这样

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

'app'是一个文件还是一个目录?你能发布其全部内容吗? –

+0

@NathanWailes'app'是一个目录。我已发布其全部内容。 – xinnjie

+0

你可以发布你的'app/__ init __。py'的内容吗? –

回答

0

感谢到@Adam,这个问题已经解决我卸载后,蟒蛇。

因为所有我对Pycharm命令工具测试manage.py,那flask时间被蟒蛇(Python版本3.6)安装,它可能缺乏一些扩展(通常我用终端python3.5)。所以我觉得问题在导入期间发生。

烧瓶命令工具抱怨'无法找到应用程序',但真正的问题是导入错误。所以这很混乱。


“万能”的解决方案:

所以,当你来到这样的问题,像我这样做,我建议你先了解您的应用的位置(尝试两个相对路径和绝对路径),当您不在正确的工作目录时,相对路径可能会导致定位问题。因此推荐使用绝对路径。

如果关于路径的每件事情都很顺利,那么请确保您的应用所需的所有软件包都已安装,并且可以导入。如果你正在使用某种类型的虚拟环境或类似的东西(在我的情况下,我使用其他版本的python缺乏一些瓶扩展),它可能是导致错误flask抱怨的进口错误。

希望这可以帮助你。

+0

如果您使用的是PyCharm,我会为每个项目创建一个virtualenv,并选择系统安装的解释器作为您的基础,然后使用PyCharm内的终端来执行任何命令。 – Adam