【发布时间】:2021-03-18 19:05:37
【问题描述】:
我正在对我的代码进行测试,但遇到了一个奇怪的导入错误。
注意事项:
- 我使用的是 VSCode 版本:1.46.1
- PYTHONPATH 设置为项目的根目录
文件夹结构是这样的:
-app.py
-models
---language.py
---category.py
-my_tests
---unit
------models
---------category_test.py
---------language_test.py
在 category_test 中,我确实使用以下方法导入“Category”类:
from models.category import Category
在语言测试中,我确实使用以下方法导入“语言”类:
from models.language import Language
在 category_test 案例中,一切正常。
在 language_test 案例中,我遇到一个“导入错误”。
它不像在 category_test 文件中那样在项目的根目录中进行搜索,而是在 my_test/unit/models 文件夹中进行搜索。
当我打印 sys.path 时,结果如预期:
[
'/home/ste3/Documents/Projects/SteFunBot/my_tests/unit/models', -> current folder
'/home/ste3/Documents/Projects/SteFunBot', -> PYTHONPATH
'/usr/lib/python38.zip', '/usr/lib/python3.8',
'/usr/lib/python3.8/lib-dynload',
'/home/ste3/Documents/Projects/SteFunBot/venv/lib/python3.8/site-packages'
]
我该如何解决这个问题?
编辑
我认为这是一个 linter 问题。是真的吗?
如果我尝试通过指定从根目录 (step1) 的路径来导入模块,然后我从导入路径 (step2) 中删除根目录来恢复导入,它可以工作:
第 1 步
from SteFunBot.models.language import Language
第 2 步
from models.language import Language
【问题讨论】:
-
模块名为
language.py,但导入为from models.languages。这两个名字不一样。 -
是的,但也修改为“语言”它不起作用。关键是python建议我使用“language_test”模块而不是“language”。我写这篇文章确实犯了一个错误。
-
请以文本形式包含文本,而不是屏幕截图。 This is what your question looks like with a screenshot
-
您可以尝试将
__init__.py添加到 root/models 文件夹吗? -
我已经这样做了,以便有机会将其添加到导入路径中。问题仍然存在。
标签: python python-3.x visual-studio-code python-import