我正在学习python并在第3行收到了我的第一个错误:
这是我的代码:
app.py
import logging.config
from flask import Flask, Blueprint
from platform import settings
app = Flask(__name__)
def main():
app.run(debug=settings.FLASK_DEBUG)
if __name__ == "__main__":
main()
我的文件结构是这样的:
project_name
|--platform
| |--api
| |--database
| |-- __init__.py
| |-- app.py
| |-- settings.py
|--logging.conf
|--requirements.txt
|--readme.md
|--setup.cfg
我使用PyCharm IDE并在终端执行: python platform\app.py
然后我收到此错误:
Traceback(最近一次调用最后一次):文件“platform \ app.py”,第4行,从平台导入设置中导入:导入错误:无法导入名称'settings'
知道这里有什么问题吗?
这是我的settings.py
# Flask settings
FLASK_SERVER_NAME = 'localhost:5000'
FLASK_DEBUG = True # Do not use debug mode in production
# Flask-Restplus settings
RESTPLUS_SWAGGER_UI_DOC_EXPANSION = 'list'
RESTPLUS_VALIDATE = True
RESTPLUS_MASK_SWAGGER = False
RESTPLUS_ERROR_404_HELP = False
# MYSQL settings
MYSQL_DATABASE_URI = 'blablalba'
MYSQL_TRACK_MODIFICATIONS = False
PYMYSQL_CONNECTION = {
'host': '123.456.789.111',
'port': 3306,
'user': 'root',
'passwd': 'password',
'db': 'database'
}
3 回答
您有一个名为
platform
的程序包,但您正在尝试在其中执行脚本 . 执行此操作时,脚本将独立运行,没有任何包信息,因为脚本未导入 . 要进行正确导入然后作为脚本运行,请使用-m选项:这将从
platform
包中导入脚本,正确设置依赖项等 .通常,出于这个原因,您可能希望将可执行脚本放在主程序包之外 . 如果您将文件夹结构修改为如此,则命令
python app.py
应该运行正常,因为platform
将是一个可识别的包:最后,作为次要的挑剔,如果您决定将
app.py
保留在包级别而不是项目级别,我建议使用相对导入来获取设置:你有一切设置正常,我的猜测是你使用
settings.py
作为常量文件 . 而不是尝试相对地从文件中导入值(因为
app.py
和settings.py
都在同一目录中)然后你可以像使用它们一样
虽然这样可以正常工作,但我喜欢这样做有点不同,以免最终试图弄清楚什么常数或功能来自哪里 . 这是我的2美分
您可以立即使用
import settings