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