我正在尝试理解其他人的混合语言存储库中的代码(大型复杂代码库的一部分)。目录结构是这样的:
module_A/
python/
__init__.py
script_A.py
script_B.py
other/
other_scripts.cxx
__init__.py
的内容是
__version__ = '1.0.0'
代码具有从
script_B.py
到 script_A.py
的相对导入,如下所示:
from module_A import script_B
请注意,中间目录
python
已被跳过。我知道代码运行起来,所以python本身解析这个import语句没有问题。然而,在 VSCode 中,pylint 却出现了问题:
No name 'script_B' in module 'module_A'
我真的很想解决这个错误,以便 (a) 我可以使用 VSCode 工具来帮助自己理解代码的工作原理(例如,悬停时的函数定义)以及 (b) 我将来可以更轻松地为代码做出贡献(例如,使用代码自动完成功能)。
有人可以解释一下以下内容吗?
这是怎么回事?我以前从未在 python 中见过跳过中间目录的相对导入。
如何解决 VSCode 中的错误以恢复常用的生活质量工具?
script_A.py
位于python文件夹中。如果您的工作空间是module_A
的父目录,则必须使用类似from module_A.python import script_B
的代码。