【问题标题】:Import Error of Flask Application in IDLE consoleIDLE 控制台中 Flask 应用程序的导入错误
【发布时间】:2021-04-26 15:24:48
【问题描述】:

我想将一个 Flask 对象导入 IDLE,以便进行实验和探索。

我可以通过在项目目录中输入python 来成功启动交互式命令行会话。

Python 3.7.5 (default, Nov 18 2019, 00:27:11)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from app import app
>>> dir(app)
['Flask', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', 
'__package__', '__spec__', 'app', 'create_app', 'current_app', 'index', 'make_response', 'randint']
>>> exit()

但我想使用 IDLE 进行此探索。
所以我将我的项目路径添加到 IDLE 中的sys.path。 当我尝试使用from app import app 导入时,我收到错误AttributeError: module 'config' has no attribute 'settings

代码示例:

from flask import Flask

def create_app():
    app = Flask(__name__,instance_relative_config=True)

    app.config.from_object('config.settings')
    app.config.from_pyfile('settings.py',silent=True)

    return app

项目结构:

project_dir/
   ├── app/
   │   ├── app.py
   ├── config/
   │   │                                                                                                                                                                                
   │   └── settings.py                                                                                                                                                                                               
   └── instance/                                                                                                                                                                                                          
       └── settings.py 

为什么IDLE在config目录下找不到settings.py模块?

注意:当我删除app.config.from_object('config.settings') 行时,导入成功。

【问题讨论】:

    标签: python flask python-idle


    【解决方案1】:

    只有在您使用 IDLE open 命令编辑文件时,IDLE 才会查找文件。当你让 IDLE 执行你的代码时,它会调用 compile() 并将结果传递给正在执行的 python。

    app.config.from_object('config.settings') 因错误消息中给出的原因而失败:config 对象没有属性 settings。添加import config.settings 可能会解决此问题。我无法确定,因为您的项目结构图不明确。它将config 显示为顶级目录,与appinstance 平行,并作为app 的子目录。

    【讨论】:

    • 谢谢。 “它将config 显示为顶级目录,与app 和“实例”平行。是“...并且作为app 的子目录” 否。 configinstanceapp 在同一目录中。它们都有相同的父目录。请注意,如上所述,从该父目录调用 python 可以正常工作。我可以在问题中添加一个具体的说明以使其更清楚吗?我已更新项目结构以添加此父目录。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 2017-05-14
    • 1970-01-01
    • 2019-07-21
    相关资源
    最近更新 更多