如何解决Pylint报告具有嵌套结构的项目的错误导入错误
我的Python Chalice项目运行正常,我的所有测试都通过了,但是Pylint正在报告unresolved import
错误。
我在具有以下项目结构的普通Python项目上重现了该错误:
myproject
.vscode
settings.json
/api
/domain
__init__.py
weekday.py
__init.py
app.py
/tests
/api
/domain
__init__.py
test_weekday.py
__init__.py
__init__.py
.vscode/settings.json
:
{
"python.pythonPath": "C:\\Users\\Admin\\AppData\\Local\\Programs\\Python\\Python38\\python.exe"
}
weekday.py
:
from enum import Enum
class Weekday(Enum):
MONDAY = 'mon'
TUESDAY = 'tue'
WEDNESDAY = 'wed'
THURSDAY = 'thu'
FRIDAY = 'fri'
class InvalidValue(Exception):
pass
def parse(key: str) -> Weekday:
try:
return Weekday(key)
except Exception as e:
raise InvalidValue() from e
app.py
:
from domain.weekday import Weekday
if __name__ == '__main__':
print(Weekday.MONDAY.value)
print('done!')
test_weekday.py
:
from unittest import TestCase
from api.domain import weekday
from api.domain.weekday import Weekday
class StateTests(TestCase):
def test_validParsing(self):
self.assertEqual(weekday.parse('mon'),Weekday.MONDAY)
self.assertEqual(weekday.parse('tue'),Weekday.TUESDAY)
self.assertEqual(weekday.parse('wed'),Weekday.WEDNESDAY)
self.assertEqual(weekday.parse('thu'),Weekday.THURSDAY)
self.assertEqual(weekday.parse('fri'),Weekday.FRIDAY)
def test_invalidParsing(self):
with self.assertRaises(weekday.InvalidValue):
weekday.parse('invalid value')
以下是我的Python特定的VS Code设置:
"python.languageServer": "Microsoft","python.linting.pylintEnabled": true,"python.linting.pylintUseMinimalCheckers": false,"python.linting.pylintArgs": [
"--disable=C0111"
],"python.pythonPath": "C:\\Users\\Admin\\AppData\\Local\\Programs\\Python\\Python38\\python.exe","python.linting.mypyCategorySeverity.note": "Warning","python.linting.mypyEnabled": true
我使用python api/app.py
运行我的香草Python应用程序,并使用python -m unittest -f
运行测试。
在我上面的香草Python项目上,我得到以下错误和警告(测试未报告任何问题,这很奇怪):
app.py
ERROR: Unable to import 'domain.weekday' pylint(import-error)
WARNING: unresolved import 'domain.weekday' Python(unresolved-import)
在我的Python Chalice项目中,我收到以下错误和警告:
app.py
ERROR: Unable to import 'domain' pylint(import-error)
WARNING: unresolved import 'domain' Python (unresolved-import)
test_weekday.py
ERROR: Unable to import 'api.domain' pylint(import-error)
ERROR: Unable to import 'api.domain.weekday' pylint(import-error)
同样,两个应用程序都可以正常工作,并且我所有的测试都通过了。
我尝试将以下内容添加到我的.vscode/settings.json
中,但这无济于事:
{
"python.autoComplete.extraPaths": [
"./api","./tests"
],}
如何配置Pylint使其在此项目结构中正常工作?
解决方法
我创建了与您提供的文件夹结构相同的项目,以及相同的设置。除了pylint警告,没有其他问题:
添加以下设置可以禁用这些警告:
"python.analysis.disabled": [
"unresolved-import",],"python.linting.pylintArgs": [
"----extension-pkg-whitelist=1xml"
],
有关pylint的更多详细信息,请参阅Readable Pylint Messages。
[编辑]
设置"python.languageServer": "Jedi",
也可以禁用这些警告。
或在launch.json
中添加配置:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。