Колба не может найти сценарий manage.py

Мое приложение для колб называется пакетом 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')

Спасибо

1 ответ

Спасибо @Adam, эта проблема была решена после удаления Anaconda.

Потому что все время я проверял manage.py на инструменте команды Pycharm, и что flask был установлен Anaconda(python версии 3.6), в нем могут отсутствовать некоторые расширения (обычно я использую python3.5 на терминале). Так что я думаю, что проблема возникает во время импорта.

Командный инструмент flask жалуется на "не могу найти приложение", но настоящая проблема - ошибка импорта. Так что это очень запутанно.


"универсальное" решение:

Поэтому, если вы сталкиваетесь с такой проблемой, как я, я советую вам сначала проверить местоположение вашего приложения(попробуйте и относительный путь, и абсолютный путь), относительный путь может вызвать проблему определения местоположения, когда вы находитесь не в правильном рабочем каталоге.. Так что абсолютный путь рекомендуется.

Если все в пути прошло хорошо, убедитесь, что все пакеты, необходимые для вашего приложения, установлены и могут быть импортированы. если вы используете какой-то тип виртуальной среды или что-то в этом роде (в моем случае я использую другую версию python, в которой отсутствуют некоторые расширения фляги), возможно, ошибка импорта делает flask Пожаловаться.

Надеюсь, это поможет вам.

Другие вопросы по тегам