项目结构
├── app
│   ├── forms
│   │   ├── init.py
│   │   ├── login.py
│ ├── init.py
│   └── views
│       ├── admin.py
│       ├── blog.py
│       ├── book.py
│       ├── init.py
├── config
│   ├── default.py
│   ├── development.py
│   ├── init.py
from app import create_app
app = create_app()
if __name__ == '__main__':
    app.run()
def create_app():
    app = Flask(__name__)
    config = load_config()
    app.config.from_object(config)
    register_routes(app)
    return app
def register_routes(app):
    from .views import admin, blog, book
    app.register_blueprint(admin.site, url_prefix='')
    app.register_blueprint(blog.site, url_prefix='/blog')
    app.register_blueprint(book.site, url_prefix='/book')
from flask_flatpages import FlatPages
from .. import create_app
site = Blueprint('blog',__name__)
app = create_app()
flatpages = FlatPages(app)
运行时出错
Traceback (most recent call last):
  File "run.py", line 13, in <module>
    app = create_app()
  File "/home/honmaple/website/app/__init__.py", line 21, in create_app
    register_routes(app)
  File "/home/honmaple/website/app/__init__.py", line 29, in register_routes
    from .views import admin, blog,  book
  File "/home/honmaple/website/app/views/blog.py", line 18, in <module>
    app = create_app()
  File "/home/honmaple/website/app/__init__.py", line 21, in create_app
    register_routes(app)
  File "/home/honmaple/website/app/__init__.py", line 29, in register_routes
    from .views import admin, blog,  book
ImportError: cannot import name 'blog'
from .. import create_app
还有我本机是 python3.5,服务器上是 python3.4,本机测试正常,服务器上运行出错,难道是版本的原因
|  |      1honmaple OP | 
|  |      2billion      2015-11-23 11:10:16 +08:00 每个文件夹下面的 init 文件,文件名前后都有两个下划线__init__.py | 
|      4yangtukun1412      2015-11-23 11:55:28 +08:00 循环引用了吧 | 
|  |      5cppgohan      2015-11-23 11:57:48 +08:00 lz 搞定了吗? 最近一年正职写 android, 偶尔写 python, 也都直接用完整包名的 import... `from app.views import admin, blog, book` | 
|  |      6honmaple OP @yangtukun1412 什么意思? | 
|  |      8chenkun0128      2015-11-23 12:45:41 +08:00 sys.path.insert(0, os.path.dirname(__file__))     ?_? | 
|  |      9honmaple OP 原来的问题搞定了, def register_routes(app): from .views import admin, blog, book app.register_blueprint(admin.site, url_prefix='') app.register_blueprint(blog.site, url_prefix='/blog') app.register_blueprint(book.site, url_prefix='/book') 改成 def register_routes(app): from .views import admin, book app.register_blueprint(admin.site, url_prefix='') app.register_blueprint(book.site, url_prefix='/book') from .views.blog import site app.register_blueprint(site, url_prefix='/blog') 暂时可以运行了,不过数据库又出问题了,现在正在搞定数据库, python 部署果然是个问题 | 
|  |      10florije      2015-11-23 13:15:03 +08:00 blog.py 中的 register_pages 这个循环引用了,然后楼主也是不遵循 pep8 啊…… # -*- coding=UTF-8 -*-一般放文件最开始位置,要跑起来 LZ 的应用也很费劲啊…… | 
|  |      11florije      2015-11-23 13:20:02 +08:00 不过明显看出来 LZ 的 django 的功底很深厚啊,写的代码还是很不错,而且不是用 IDE 写的,想必有 3+年的 python 经验了吧。 | 
|  |      12honmaple OP @florije 额,别嘲讽我了,代码上还有很多重复工作没优化,不过我只有一年经验,刚入门 django 觉得 django 太大不自由就转 flask 了。。。话说你是怎么看出我不是用 IDE 写的(用的 vim) | 
|  |      13honmaple OP @florije 问一下上个问题,我将 register_routes(app) register_assets(app) register_db(app) register_jinja2(app) 写到函数外是不是就没有循环引用了 | 
|  |      14florije      2015-11-23 13:49:11 +08:00 @honmaple 没有想到是 vim ,只是想是类似的比如说 sublime 的工具,因为很多代码没有格式化(ps ,一般 IDE 都带这种功能,起码我让小伙伴提交前都必须 reformat 一下),这种就是顺序问题,看报错里面也能看出来端倪,就是报了两次 register_routes(app)这个错误。这个没有详细看代码就是看了报错提示的两个文件,简单分析了下。 | 
|  |      15gevin      2015-11-24 08:30:57 +08:00 |