Проект Flask работает на PyCharm, но не на VS Code и Heroku

#python #flask #heroku #visual-studio-code #pycharm

#питон #колба #героку #visual-studio-код #pycharm

Вопрос:

Когда я запускаю flask run терминал VS Code, появляется сообщение об ошибке

 flask run  * Serving Flask app 'app.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: off Usage: flask run [OPTIONS] Try 'flask run --help' for help.  Error: While importing 'app', an ImportError was raised.  

Я думаю, что это связано с тем, как структурирован проект, и, возможно, это приводит к ошибкам при выполнении такого рода импорта.

from backend.config.dbconfig import pg_config

Это структура проекта, которую я сейчас использую.

 system  ├───.github  ├───.venv  ├───.vscode  ├───backend  │ ├───config  │ │ ├───__init__.py  │ │ └───dbconfig.py  │ ├───controller  │ │ ├───__init__.py  │ │ └───account.py  │ ├───model  │ │ ├───__init__.py  │ │ └───account.py  │ └───app.py  ├───Documents  └───frontend  ├───public  └───src  

Все __init__.py они пусты и, насколько я понимаю, они необходимы.

Я заметил , что когда я удаляю backend. из импорта from backend.config.dbconfig import pg_config и добавляю это в свой app.py…

 import sys sys.path.append('./')  

это работает в VS-коде и Heroku, но PyCharm теперь выдает ошибки, говорящие Unresolved reference 'model'

Ниже приведены примеры моего приложения после выполнения «исправлений», чтобы оно работало на Heroku и VS-коде. Импорт по-прежнему отображается как ошибки в PyCharm, но он выполняется в PyCharm. Поскольку это приводит к ошибкам, я предполагаю, что я делаю это неправильно, но я не знаю, что еще можно сделать, чтобы исправить это.

Это образец моего app.py

 import sys  sys.path.append('./')  from flask import Flask, request, jsonify from flask_cors import CORS from controller.account import BaseAccount  app = Flask(__name__) CORS(app)   @app.route('/account', methods=['GET', 'POST']) def handleAccounts():  if request.method == 'GET':  return BaseAccount().getAllAccounts()  elif request.method == 'POST':  return BaseAccount().insertAccount(request.json)  else:  return jsonify("Method Not Allowed"), 405  

controller/account.py

 from flask import jsonify  from model.account import AccountDAO  class BaseAccount:  

Можно ли исправить эти ошибки без изменения структуры проекта?

Ответ №1:

Это связано с тем, что Pycharm может автоматически добавлять папку рабочего пространства(системную папку в вашем проекте) PYTHONPATH , но в VSCode вам нужно добавить ее вручную.

Вы можете добавить это в файл settings.json, чтобы решить проблему:

 "terminal.integrated.env.windows": {  "PYTHONPATH": "${workspaceFolder};"  },