#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};" },