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特有的东西。