python - IDLE 控制台中 Flask 应用程序的导入错误
问题描述
我想将一个 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 进行这种探索。
所以我sys.path
在 IDLE 中添加了我的项目路径。当我尝试使用导入时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 在目录中找不到settings.py
模块config
?
注意:当我删除 lineapp.config.from_object('config.settings')
时,导入成功。
解决方案
IDLE 仅在您使用 IDLE open 命令编辑文件时查找文件。当您要求 IDLE 执行您的代码时,它会调用 compile() 并将结果传递给正在执行的 python。
app.config.from_object('config.settings')
由于错误消息中给出的原因而失败:config
对象没有属性settings
。添加import config.settings
可能会解决此问题。我无法确定,因为您的项目结构图不明确。它既显示config
为顶级目录,app
与.instance
app
推荐阅读
- javascript - react-native-fetch-blob 非常慢
- r - 为什么 lintr 会说“警告:全局变量 'Cloaked' 没有可见绑定”?
- javascript - Bootstrap modal 没有出现,即使它是直接副本
- python - 用另一个字典列表更新字典列表。有更快的方法吗?
- mysql - 列出 meta_value 并转换为 INT 进行比较
- javascript - VueJS:如何将 Vue.prototype.$http 传递给不同的 Vue 应用程序?
- data-structures - 概率数据结构和草图有什么区别?
- ios - 如何在不删除安全区域的情况下隐藏 UITabbarController tabBar
- python - 使用 Keras `Model.predict_generator` 时如何关联训练数据 ID
- google-compute-engine - 将 SSH 与 Google 的 VPC 连接的问题