Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.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 PyLint未在Flask应用程序中获取导入_Python_Flask_Import_Pylint - Fatal编程技术网

Python PyLint未在Flask应用程序中获取导入

Python PyLint未在Flask应用程序中获取导入,python,flask,import,pylint,Python,Flask,Import,Pylint,我有一个烧瓶应用程序,它的结构如下(我认为是典型的) repo_name config.py requirements.txt run.py /service __init__.py models.py schemas.py views.py run.py脚本包含以下内容 from service import app app.run(debug=False, port=8080, host='0.0.0.

我有一个烧瓶应用程序,它的结构如下(我认为是典型的)

repo_name
    config.py
    requirements.txt
    run.py
    /service
       __init__.py
       models.py
       schemas.py
       views.py
run.py
脚本包含以下内容

from service import app
app.run(debug=False, port=8080, host='0.0.0.0')
服务内部。我创建了Flask应用程序,最后,
导入视图

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow

app = Flask(__name__)
app.config.from_object('config')

db = SQLAlchemy(app)
ma = Marshmallow(app)

import service.views
models.py
schemas.py
views.py
对于简单的Flask应用程序来说都是非常标准的,它们还可以根据需要从service import app
或从service import models调用

我的问题是PyLint为所有这些导入调用抛出错误“E0401:无法导入‘服务’”。这不是真正的“合法”错误,因为我可以很好地运行代码

使错误消失的一件事是将导入调用从repo_name.service import更改为
。然而,出于两个原因,这是不可取的

  • repo\u名称
    与应用程序没有真正的关联。如果我走这条路,我可能会把所有东西都放到一个目录下。此外,不要求人们以相同的方式命名目录(例如,有人可能将其克隆为
    git clone foobar
    ,而不是
    git clone repo_name
    ,这会破坏代码
  • 更重要的是,这甚至不起作用。当我进行这些更改并尝试运行服务器时,我会得到
    ModuleNotFoundError:没有名为“repo\u name”的模块

  • 如何在此处协调PyLint和Flask?理想情况下,我希望以“正确”的方式解决此问题另外,不是在每次导入之前添加一个
    #pylint:disable=
    调用。

    也许我遗漏了一些东西,但是您是否尝试过使用相对导入,例如从.import app
    导入
    from.import xyz
    我认为
    from.import xyz
    应该从当前模块导入,或者从..import xyz从父模块导入module@PJSantoro明白了。这几乎可以正常工作,但当我在
    run.py
    中将
    服务导入应用程序
    更改为
    from.import服务
    时,Python抛出
    ImportError:无法导入名称“服务”
    。如果我只使用
    导入服务
    ,它可以正常工作,但派林不喜欢。不确定原因。好的-不完全清楚是什么时候re错误来自。在run.py中,我认为服务导入应用程序中的
    应该保持不变。在
    服务的底部。我使用的文件是:
    from.import views
    ,或者如果您试图从views.py导入models.py,我会使用:
    from.import models
    。我不使用PyLint,但PEP8不喜欢y import语句位于
    服务.py.py
    文件的底部,但必须这样做way@PJSantoro啊,对不起,我不清楚。我确实像你说的那样将所有其他导入更改为相对导入,它们现在正在工作,这很好。但是PyLint仍然在抱怨
    run.p中的服务导入应用程序
    y
    。将其更改为相对导入似乎无法像其他导入一样解决问题。奇怪…可能尝试从.service import app
    ?我相信您当前拥有的是正确的语法,因此可能是PyLint特有的语法。可能我遗漏了一些东西,但您是否尝试使用相对导入,例如从.import使用
    t app
    我认为
    from.import xyz
    应该从当前模块导入,或者
    from..import xyz
    应该从父模块导入module@PJSantoro明白了。这几乎可以正常工作,但当我在
    run.py
    中将
    服务导入应用程序
    更改为
    from.import服务
    时,Python抛出
    ImportError:无法导入ort名称“service”
    。如果我只使用
    导入service
    ,它会起作用,但PyLint不喜欢这样。不确定原因。确定-不完全清楚错误来自何处。在run.py中,我认为
    from service import app
    应该保持不变。在
    服务的底部。\uu init\uuuuuy.py
    文件我将使用:
    from.I导入视图
    ,或者如果您试图从views.py导入models.py,我会这样做:
    from.import models
    。我不使用PyLint,但PEP8不喜欢
    服务底部的任何import语句way@PJSantoro啊,对不起,我不清楚。我把所有其他的导入都改成了像你说的那样是相对的,他们现在正在工作,这很好。但是PyLint仍然在抱怨
    run.py
    中的
    服务导入应用程序
    。将其更改为相对导入似乎并不像其他应用程序那样解决问题。奇怪的是……也许可以尝试
    来自.service import应用程序
    ?我相信你目前拥有的不是他纠正了语法,所以可能是PyLint特有的东西。