Flask run работает отлично, (FLASK_APP = main.py), но python main.py выдает ошибки - PullRequest
0 голосов
/ 10 октября 2019

Когда я набираю Flask run, чтобы запустить мое приложение, все работает как положено. Дотенв устанавливает FLASK_APP=zigweb/main.py. Однако, если я перехожу в папку zigweb и набираю python main.py, я получаю ошибки импорта. Я занимаюсь разработкой в ​​Pycharm, я разделил свой проект на сервер, бот-телеграмму и приложение для фляги, чтобы я мог докеризовать.

Результаты flask run

 * Serving Flask app "zigweb/main.py" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 264-034-887
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Результаты python main.py

Traceback (most recent call last):
  File "main.py", line 3, in <module>
    from .app import app, db, signal_saved
ModuleNotFoundError: No module named '__main__.app'; '__main__' is not a package


main.py

#!/usr/bin/env python3
import os
from .app import app, db, signal_saved
from .app.models import User, Signal
from .app.functions import btc_to_satoshi
import pickle
from .pricedata import start_price_check
from dotenv import load_dotenv
load_dotenv()

@app.shell_context_processor
def make_shell_context():
    return {'db': db, 'User': User, 'Signal': Signal}


@app.context_processor
def satoshis():
    return dict(satoshis=btc_to_satoshi)


def some_func(signal):
    query = Signal.query.all()
    with open('.\\zigweb\signals.pickle', 'wb') as f:
        pickle.dump(query, f, pickle.HIGHEST_PROTOCOL)
        app.logger.info(f'Pickled object to {f}')


signal_saved.connect(some_func)


if __name__ == '__main__':
    app.run()
    start_price_check()


Структура проекта:

zigbot
  nginx
  zigbot (not flask)
      app
         scripts.py
      main.py
  zigweb (flask)
      app
        models.py
        __init__.py
        etc
      main.py
      some-other-scripts.py

Если я изменю основной. py для устранения ошибок импорта, я не понимаю, как это тогда работает с flask run, если это не удается с python main.py. В любом случае, если я исправлю ошибки импорта, удалив символ «.»с .app Pycharm затем подчеркивает эти импорты красным цветом, но он почти запускается.

 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Restarting with stat
C:\Users\phill\Anaconda3\envs\zigbot\python.exe: can't open file 'C:\Users\phill\PycharmProjects\zigbot\main.py': [Errno 2] No such file or directory

ОБНОВЛЕНИЕ 2 Если я отключаю отладку, сервер работает правильно, запустив python main.py, но выдает ошибку ВЫШЕ, еслиотладка установлена ​​на 1.

...