【问题标题】:python-flask Nomodule named 'flask_nav'python-flask No Module named 'flask nav'
【发布时间】:2016-06-13 19:20:44
【问题描述】:

其实我是在学习python flask Navigation,我成功安装了所有需要的包,这些是一些包,

app$ venv/bin/easy_install  flask-restful
app$ venv/bin/easy_install  Flask-bootstrap
app$ venv/bin/easy_install  Flask-Navigation

但是当我想导入时

   from flask_nav import Nav
         or
   from flask_nav.elements import Navbar, View

出现错误,

>>>from flask_nav import register_renderer
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'flask_nav'

我正在使用 ubuntu-14.02 和 Python 3.4.3。我该如何解决这个错误,任何解决方案。

【问题讨论】:

    标签: python python-3.x navigation flask-restful


    【解决方案1】:

    根据Flask-Navigation 文档,您应该导入Navigation 而不是Nav

    from flask import Flask
    from flask.ext.navigation import Navigation
    
    app = Flask(__name__)
    nav = Navigation(app)
    

    您可能会将Flask-Navigation 与安装在包名flask-nav 下的Flask-Nav 混淆。

    从documentation,以下是Flask-Nav 和Flask-Navigation 之间的一些区别:

    Flask-Nav 在 Flask-Navigation 中拥有一些不错的核心思想,即 大约一岁,作者之前看过的第一个地方 决定编写 Flask-Nav。为重新实施辩护。 以下是一些主要区别:

    • Flask-Navigation 将所有元素类型滚动到单个 Item 类中, 它用作标签、视图和链接元素。这使它有点 难以扩展。
    • Flask-Navigation 中的 HTML 生成是在内部完成的 包本身,而 Flask-Nav 使用更完整的外部 解决方案。
    • 导航结构的创建和渲染是分开的 在 Flask-Nav 中(参见渲染器)。这允许不止一种方式 渲染相同的导航栏,允许其他包(例如 Flask-Bootstrap)也提供渲染器。
    • 一些技术选择被认为有点奇怪,已被避免 (BoundTypeProperty)
    • 虽然 Flask-Navigation 使用信号和挂钩来 在每个请求上重新生成导航栏,Flask-Nav 实现 通过延迟实例化导航栏来实现动态行为 需要并且在最后可能的时刻。

    【讨论】:

    • 是的,@Forge 你说得对。由于名称,我对这两个软件包感到困惑,感谢您的链接(文档)
    【解决方案2】:

    我得到了答案,还有 $ flask_virtual/bin/easy_install Flask-Navigation

    我们也需要安装 flask-nav 才能访问

    from flask_nav import Nav
    from flask_nav.elements import Navbar, View
    

    所以使用 $ venv/bin/easy_install --upgrade flask-nav

    【讨论】:

      【解决方案3】:

      就我而言,只有这种形式的导入有效:

      from flask_navigation import Navigation

      见:https://stackoverflow.com/a/50696358/7969193

      【讨论】:

        猜你喜欢
        • 2019-04-03
        • 2017-02-20
        • 2018-07-20
        • 2021-07-20
        • 1970-01-01
        • 2013-05-12
        • 1970-01-01
        • 2020-08-08
        • 2013-06-27
        相关资源
        最近更新 更多