Невозможно запустить Flask из терминала, «нет модуля с именем« my_app »» - PullRequest
0 голосов
/ 27 октября 2018

Я ожидал получить следующее, но я просто застрял на этом этапе.

* Serving Flask app "app"
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

В Терминале я попытался запустить FLASK_APP=run.py flask run, затем получить

ModuleNotFoundError: нет модуля с именем my_app

Когда я попытался изменить имя в команде на FLASK_APP=__init__.py flask run, я получаю

Ошибка: не удалось найти приложениев модуле «МойПроект».Вы уверены, что он содержит приложение Flask?Возможно, вы завернули его в промежуточное ПО WSGI или используете заводскую функцию.

Вот моя структура проекта

myProject/
    |—my_app/
        |— source/
            |— __init__.py
            |— other .py files
        |— static/
        |— templates/
    |— __init__.py
    |— someFile.sqlite
    |— run.py

myProject/run.py содержит две строкикода:

from my_app import app 
app.run()

myProject/__init__.py не содержит ничего, пусто.

myProject/source/__init__.py также пусто (но я думаю, что эти файлы просто должны быть здесь?)

Спасибо заранее!

edit: у меня проблемы с запуском файлов в PyCharm, но когда я запускаю файл run.py в Spyder Anaconda, я получаю ожидаемое сообщение о том, что сервер работает.Почему он работает на Spyder, а не на PyCharm?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Нашел решение проблемы выше! PyCharm -> настройки -> интерпретатор проекта -> (колба не была установлена), поэтому я нажал кнопку +, чтобы добавить пакет, искал колбу и установил ее. После закрытия настроек я вернулся и запустил run.py, и это сработало! Причина, по которой я знал, что пакет отсутствует в интерпретаторе, который я использовал, заключалась в том, что когда я запускал run.py, я получал «… / .conda / envs / python3.6 / bin / python: ни один модуль с именем flask». I заметил, что в Терминале, когда я запускал флягу pip show, он дал мне место, где он установлен, «Location: /Users/me/anaconda3/lib/python3.6/site-packages». После просмотра двух путей Я решил, что переводчик не смотрит в правильном месте, поэтому, когда я изменил путь, он начал работать.

Кроме того, мне не нужно было использовать какие-либо команды в Терминале для запуска сервера. Я только запустил файл run.py. Надеюсь, мое объяснение имеет смысл. Спасибо вам всем!

0 голосов
/ 27 октября 2018

Прежде чем войти в тему, вы должны создать __init__.py в папке my_app, она превратит его в пакет python, чтобы его можно было импортировать.

Когда вы выполните flask run,flask будет искать экземпляр app в модуле, который вы указали с помощью FLASK_APP, поэтому app.run() в этой ситуации не требуется.

Что вам нужно сделать?

  1. Удалитьrun.py.
  2. Установите FLASK_APP в качестве имени модуля / пути импорта, где вы создаете экземпляр фляги app (возможно, my_app.source).
  3. Затем просто выполните flask run.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...