gpt4 book ai didi

python - 底部的 Python 模块导入可以吗?

转载 作者:行者123 更新时间:2023-12-05 00:44:40 25 4
gpt4 key购买 nike

Pylint 对我大喊大叫,因为我放了一个 from .views import *结束我的__init__.py说导入应该放在模块的顶部。

如果我把它放在 __init__.py 的顶部然后 Flask 找不到我的路线( View ),所以这不起作用。页面无法加载,404 错误。最后导入路由时加载正常。

几个问题:

  • Pylint 认为模块应该始终位于顶部并且有时在最后导入是可以接受的(就像在这种情况下)是错误的吗?
  • 还是有另一种方式我应该导入我的路线?

  • 供引用,以防万一:
    .
    ├── README.md
    ├── my_app
    │   ├── __init__.py
    │   ├── forms.py
    │   ├── models.py
    │   ├── static
    │   ├── templates
    │   │   ├── index.html
    │   │   └── loggedin.html
    │   └── views.py
    ├── config.py
    ├── instance
    │   └── config.py
    ├── requirements.txt
    └── run.py
    __init__.py 中的内容示例
    from flask import Flask, render_template
    from authlib.integrations.flask_client import OAuth


    app = Flask(__name__, instance_relative_config=True)
    app.config.from_object('config')
    app.config.from_pyfile('config.py')

    oauth = OAuth(app)

    APP_CALLBACK_URL = app.config['APP_CALLBACK_URL']
    APP_CLIENT_ID = app.config['APP_CLIENT_ID']
    APP_CLIENT_SECRET = app.config['APP_CLIENT_SECRET']
    APP_DOMAIN = app.config['APP_DOMAIN']
    APP_BASE_URL = 'https://' + APP_DOMAIN

    my_app = oauth.register(
    'MY_APP',
    client_id=APP_CLIENT_ID,
    client_secret=APP_CLIENT_SECRET,
    api_base_url=APP_BASE_URL,
    access_token_url=APP_BASE_URL + '/oauth/token',
    authorize_url=APP_BASE_URL + '/authorize',
    )


    from .views import *

    最佳答案

    一般来说,导入应该放在最前面,但是 Flask 文档讨论了这种情况并鼓励你照做。取自 https://flask.palletsprojects.com/en/1.1.x/patterns/packages/ :

    1. the Flask application object creation has to be in the __init__.py file. That way each module can import it safely and the __name__ variable will resolve to the correct package.

    2. all the view functions (the ones with a route() decorator on top) have to be imported in the __init__.py file. Not the object itself, but the module it is in. Import the view module after the application object is created.


    顺便说一句,不要做 from .views import * .做 import .views反而。

    关于python - 底部的 Python 模块导入可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59578249/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com