Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask应用程序不使用其他模块中定义的路由_Python_Python 2.7_Module_Flask - Fatal编程技术网

Python Flask应用程序不使用其他模块中定义的路由

Python Flask应用程序不使用其他模块中定义的路由,python,python-2.7,module,flask,Python,Python 2.7,Module,Flask,我无法使用一个创建并运行Flask应用程序对象的模块和一个实现视图的模块(路由和错误处理程序)。这些模块不包含在Python包中 app.py from flask import Flask app = Flask('graphlog') import config import views if __name__ == '__main__': app.run(host=config.host, port=config.port, debug=config.debug) from

我无法使用一个创建并运行Flask应用程序对象的模块和一个实现视图的模块(路由和错误处理程序)。这些模块不包含在Python包中

app.py

from flask import Flask
app = Flask('graphlog')

import config
import views

if __name__ == '__main__':
    app.run(host=config.host, port=config.port, debug=config.debug)
from app import app

@app.route('/')
def index():
    return 'Hello!'
host = 'localhost'
port = 8080
debug = True
视图.py

from flask import Flask
app = Flask('graphlog')

import config
import views

if __name__ == '__main__':
    app.run(host=config.host, port=config.port, debug=config.debug)
from app import app

@app.route('/')
def index():
    return 'Hello!'
host = 'localhost'
port = 8080
debug = True
config.py

from flask import Flask
app = Flask('graphlog')

import config
import views

if __name__ == '__main__':
    app.run(host=config.host, port=config.port, debug=config.debug)
from app import app

@app.route('/')
def index():
    return 'Hello!'
host = 'localhost'
port = 8080
debug = True

我总是得到Flask的默认“404未找到”页面。但是,如果我将
view.py
的内容移动到
app.py
中,它就会工作。这里有什么问题?

这里有四个模块:

  • \uuuuu main\uuuuu
    ,主脚本,您给Python命令运行的文件
  • config
    ,从
    config.py
    文件加载
  • views
    ,从
    views.py
    文件加载
  • app
    ,使用
    import app
    时从
    app.py
    加载
请注意,后者与第一个是分开的!初始脚本不是作为
app
加载的,Python认为它是不同的。您有两个
Flask
对象,一个引用为
\uuuuu main\uuuuu.app
,另一个引用为
app.app

创建一个单独的文件作为脚本的主要入口点;说
run.py

from app import app
import config

if __name__ == '__main__':
    app.run(host=config.host, port=config.port, debug=config.debug)
并从
app.py
中删除
import config
行以及最后两行


或者(但更难看的是),在
views.py

@MartijnPieters中使用
from\uuuu main\uuuuu.import app
导入
,它从
app.py
@MartijnPieters相同的目录打印我期望的模块对象
views.py
,是的!(嗯,它会打印烧瓶应用程序,同样正确)。顺便说一句,我只是试着把它移到Python包中(
graphlog/app.py
graphlog/views.py
graphlog/config.py
graphlog/uu init_uuuu.py
),它可以与
Python-m graphlog.app
一起工作。可能是烧瓶里的虫子?就是这样,我没想过。谢谢I get
模块“app”没有属性“run”
@jul:
app
Flask()
实例的名称(OP有
app=Flask('graphlog')
)。相应地调整。
app
是模块的名称。是不是应该是app import app的
?@jul:啊,是的,我现在明白你的意思了;相应调整。