Python:无法导入模块

Python:无法导入模块,python,flask,Python,Flask,我在向你学习 我有文件名为microblog.py的应用程序微博 从应用程序导入应用程序 我有一个名为app的目录,它包含\uuuu init\uuuu.py和下面的代码 从烧瓶导入烧瓶 从配置导入配置 app=烧瓶(名称) app.config.from_对象(config) 从应用程序导入路由 但是当我运行flask run时,我得到的错误如下 ImportError:没有名为“app”的模块 我的理解是,如果我想将一个目录表示为一个包,那么我必须在目录中包含一个\uuu init\u

我在向你学习

我有文件名为microblog.py的应用程序微博

从应用程序导入应用程序
我有一个名为
app
的目录,它包含
\uuuu init\uuuu.py
和下面的代码

从烧瓶导入烧瓶
从配置导入配置
app=烧瓶(名称)
app.config.from_对象(config)
从应用程序导入路由
但是当我运行
flask run
时,我得到的错误如下

ImportError:没有名为“app”的模块
我的理解是,如果我想将一个目录表示为一个包,那么我必须在目录中包含一个
\uuu init\uuuu.py
,我这样做是为了
app
目录

目录结构

.
├── __init__.py
├── app
│   ├── __init__.py
│   ├── forms.py
│   ├── routes.py
│   └── templates
│       ├── base.html
│       ├── index.html
│       └── login.html
├── config.py
└── microblog.py
全堆栈跟踪


烧瓶运行
*服务烧瓶应用程序“microblog.py”
*环境:生产
警告:不要在生产环境中使用开发服务器。
改用生产WSGI服务器。
*调试模式:关闭
用法:烧瓶运行[选项]
错误:导入“microblog.microblog”时,引发了一个导入错误:
回溯(最近一次呼叫最后一次):
文件“~/anaconda3/envs/flask_python3.5.2/lib/python3.5/site packages/flask/cli.py”,第235行,在locate_应用程序中
__导入(模块名称)
文件“~/learning/migual\u flask/microblog/microblog.py”,第1行,在
从应用程序导入应用程序
ImportError:没有名为“app”的模块
这个代码一直工作到最近,突然开始出现问题。我找不到哪里出了问题

非常感谢您的帮助


谢谢。

好的,从您发布的层次结构来看,很明显它应该可以工作,但我怀疑您是从错误的目录导入的

给定目录:

.
├── __init__.py
├── app
│   ├── __init__.py
│   ├── forms.py
│   ├── routes.py
│   └── templates
│       ├── base.html
│       ├── index.html
│       └── login.html
├── config.py
└── microblog.py
假设您从根目录(顶部的“.”导入它们:

我注意到你的
app/\uuuu init\uuuuuuuuuuuuuuuuy.py
中有
app=Flask()
,这是一种非常糟糕的做法,应该尽可能避免(什么让你觉得它好?我想不出任何),但它对我来说是有效的:

>>> import app
>>> from app import app

# the first app is module
# the second is app = Flask()
# but the second one will overwrite the first one's name
# which is another terrible practice
您可以检查一个模块:

>>> import app
>>> help(app) # app = Flask() is there

你能显示你的目录层次结构吗?i、 e.文件在哪里?你从哪里打电话?为什么你有app import routes%的最后一行?你想做什么?可能是你的目录层次结构造成的。请尝试以下链接。你为什么要用这个?:>从应用程序导入路由%希望这能帮助你。祝你今天愉快D@knh190,我已经用目录结构更新了post,并且%符号作为
cat
命令输出的一部分。您可以发布完整的stacktrace吗?我可以通过python控制台导入模块,但是通过
flask run
仍然面临同样的问题。@rːdʒ您的完整回溯显示您正在从中的类导入模块
microblog
但是你没有显示源代码。我已经在上上传了源代码,请检查。我没有给出
flask run
而是给出了
python microblog.py
及其工作状态。我使用app name env变量定义了一个
.flaskenv
文件。@rːdʒdʒ您的zip与您的回溯完全不匹配!你想干什么?我完全迷路了。但是,由于我的演示已经清楚地显示了如何使导入工作,我将结束这篇后续文章。
>>> import app
>>> help(app) # app = Flask() is there