Когда я набираю 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.