【发布时间】:2013-12-07 23:51:18
【问题描述】:
我正在尝试从我的 python 包的另一个文件夹中导入一个 python 类,但出现此错误“没有名为模型的模块”。
这是一个 Flask 项目。
-app
|-run.py
|-myapp
|- libs
|- updateto
|- __init__.py (empty)
|- connection.py
|- removeto
|- __init__.py (empty)
|- static
|- templates
|- __init__.py (NOT empty)
|- routes.py
|- models.py
我的 init.py:
from flask import Flask
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///maindb.db'
from models import db
db.init_app(app)
import myapp.routes
在我的 models.py 中有一个名为:application 的类
在 connection.py 中,我想导入我的类“应用程序”。 我尝试使用“从模型导入应用程序”,但出现此错误“没有名为模型的模块”。
我认为通过修改“updateto”文件夹中的 init.py 可以达到这个目标,但我不确定,因为我不清楚 init 的功能.py 文件...
谢谢
编辑:
这很奇怪,如果在connection.py下我添加“import myapp”和“print(help(myapp))”,我有这个输出:
Help on package myapp:
NAME
myapp
FILE
c:\app\myapp\__init__.py
PACKAGE CONTENTS
libs (package)
models
routes
DATA
app = <Flask 'myapp'>
但是,如果我尝试“从 myapp 导入模型”,则会出现此错误“ImportError:无法导入名称模型”
EDIT2:
如果我尝试在 connection.py 中添加“从 myapp 导入应用程序”,它会起作用,但如果我尝试导入模型则不会……我很惊讶。我尝试添加 myapp/init.py:
__all__ = ["models", "routes]
但同样的错误...
EDIT3:
嗯,我已经将 libs 文件夹下的所有模块移动到 myapp 中,当我尝试将 connection.py “从模型导入应用程序”放入时,我总是出现同样的错误“ImportError:无法导入名称应用程序”
connection.py中的其他测试:
import models
print(models)
Output:
<module 'myapp.models' from 'C:\app\myapp\models.pyc'>
我可以导入名为 models 的模块,但无法导入 models.py 下的类
EDIT4:
好的,我想我找到了问题所在。它是我在 myapp 中的 ini.py,因为如果我评论这个文件内容,connection.py 现在可以在模型中导入我的类应用程序。我运行使用 routes.py 的文件 run.py 并且是他调用 operation.py
通过一些测试,我找到了导致我的错误的行:
from models import db
db.init_app(app)
import myapp.routes
但是为什么????
【问题讨论】:
-
可能是导入路径的问题。您能告诉我们您是如何加载
connection.py文件的吗?你是从updateto目录运行它吗? -
No 在我的烧瓶应用程序中运行。这是我启动 run.py 时调用 connection.py 的 routes.py 文件。
标签: python import module flask