0

我正在尝试从另一个模块正确导入函数“mmenu”

我遇到了运行时错误:

Traceback (most recent call last):
  File "path.../venv/src/routes.py", line 4, in <module>
    from venv.src.main_menu import mmenu
ModuleNotFoundError: No module named 'venv.src'

在 Java 之后,这个 Python 对我来说有点神秘 :)

我在同一个“src”目录中有 2 个文件

主菜单.py

    def mmenu():
        menu = [{"name": "HOME", "url": "home"},
            {"name": "fooo", "url": "foo"},
            {"name": "bar", "url": "bar"},
            {"name": "CONTACT", "url": "contact"}]
        return menu

路线.py

    from flask import Flask, render_template, request, flash, session, redirect, abort
    from jinja2 import Template
    from flask.helpers import url_for
    from venv.src.main_menu import mmenu

    app = Flask(__name__)
    
    menu = mmenu
    
    @app.route("/")
    @app.route("/index")
    def index():
        # return "index"
        print("loaded" + url_for('index'))
        return render_template('index.html', title="Index page", menu=menu)

    # ...

    if __name__ == "__main__":
        app.run(debug=True)

导入是由 IDE 生成的,例如:

from venv.src.parts.main_menu import mmenu
4

1 回答 1

0

如果生成这样的导入,您的 IDE(哪个 IDE?)可能配置错误。

venv本身,也不是其中的任何src目录,都不应该在导入路径中。

你从来没有提到你有一个parts/包,但从导入我会假设你这样做,你的结构类似于

venv/
  src/             # source root
    routes.py
    parts/         # parts package
      __init__.py  # (empty) init for parts package
      main_menu.py

使用这种结构,假设main_menu您使用.parts.main_menuroutes.pypython routes.py

如果您在和/或中有__init__.py文件,请摆脱它们;您不希望将这些目录假定为 Python 包。venv/src/

于 2020-07-07T23:15:34.657 回答