ImportError: cannot import name 'foo'
我正在学习python,在第3行收到了第一个错误:
这是我的代码:
App.Py
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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() |
我的文件结构如下:
1 2 3 4 5 6 7 8 9 10 11 | project_name |--platform | |--api | |--database | |-- __init__.py | |-- app.py | |-- settings.py |--logging.conf |--requirements.txt |--readme.md |--setup.cfg |
号
我使用pycharm ide并在终端中执行:
Traceback (most recent call last):
File"platform\app.py", line 4,
infrom platform import settings
ImportError: cannot import name 'settings'
号
知道这里怎么了吗?
这是我的设置.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 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' } |
您有一个名为
1 | python -m platform.app |
这将从
通常,出于这个确切的原因,您希望将可执行脚本放在主包之外。如果您将文件夹结构修改成这样,那么命令
1 2 3 4 5 6 7 8 9 10 11 | project_name |--platform | |--api | |--database | |-- __init__.py | |-- settings.py |-- app.py |--logging.conf |--requirements.txt |--readme.md |--setup.cfg |
。
最后,作为一个小吹毛求疵,如果您决定将
1 | from . import settings |
。
你的一切设置都很好,我猜你在使用
1 | from platform import settings |
尝试从文件中相对导入值(因为
1 | from settings import * |
号
然后你可以像
1 | print(FLASK_SERVER_NAME) |
虽然这会很好,但我喜欢做的有点不同,以免最后抓我的头,试图找出常数或函数来自何处。这是我的2美分
1 2 3 4 | import settings.py as configs # or any variable name you want to use print(configs.FLASK_SERVER_NAME) # more understandable as now you know FLASK_SERVER_NAME is coming from configs |
。
你可以直接用