Flask 项目在 PyCharm 上运行,但不在 VS Code 和 Heroku 上运行
Flask project runs on PyCharm but not on VS Code and Heroku
当我在 VS Code 终端中 运行 flask run
时,错误显示
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 都是空的,据我所知它们是必需的。
我注意到当我从导入 from backend.config.dbconfig import pg_config
中删除 backend.
并将其添加到我的 app.py...
import sys
sys.path.append('./')
它在 VS Code 和 Heroku 中有效,但 PyCharm 现在抛出错误 Unresolved reference 'model'
下面是我的应用程序在对 Heroku 和 VS Code 进行“修复”后的示例 运行。导入在 PyCharm 中仍显示为错误,但在 PyCharm 中显示为 运行s。由于它抛出错误,我假设我正在以错误的方式处理它,但我不知道还能做些什么来修复它。
这是我的样本 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:
是否可以在不更改项目结构的情况下修复这些错误?
这是因为Pycharm可以在PYTHONPATH
中自动添加工作区文件夹(你项目中的系统文件夹),但是在VSCode需要手动添加。
你可以在settings.json文件中添加这个来解决问题:
"terminal.integrated.env.windows": {
"PYTHONPATH": "${workspaceFolder};"
},
当我在 VS Code 终端中 运行 flask run
时,错误显示
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 都是空的,据我所知它们是必需的。
我注意到当我从导入 from backend.config.dbconfig import pg_config
中删除 backend.
并将其添加到我的 app.py...
import sys
sys.path.append('./')
它在 VS Code 和 Heroku 中有效,但 PyCharm 现在抛出错误 Unresolved reference 'model'
下面是我的应用程序在对 Heroku 和 VS Code 进行“修复”后的示例 运行。导入在 PyCharm 中仍显示为错误,但在 PyCharm 中显示为 运行s。由于它抛出错误,我假设我正在以错误的方式处理它,但我不知道还能做些什么来修复它。
这是我的样本 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:
是否可以在不更改项目结构的情况下修复这些错误?
这是因为Pycharm可以在PYTHONPATH
中自动添加工作区文件夹(你项目中的系统文件夹),但是在VSCode需要手动添加。
你可以在settings.json文件中添加这个来解决问题:
"terminal.integrated.env.windows": {
"PYTHONPATH": "${workspaceFolder};"
},