Python 使用包名导入模块

Python import module with package name

我已经阅读了很多关于这个问题的问题,但仍然有一些问题。

首先我想解释一下我想做什么

我有这个文件系统

 Project/
       └──main.py
       └──transformations/
                        └──__init__.py
                        └──translate.py
                        └──rotate.py
                        └──scale.py

并且main.py是:

import transformations

if __name__ == "__main__":
    print("Main:")
    transformations.translate.test()
    transformations.rotate.test()
    transformations.scale.test()

每个 test() 只是在控制台上打印“Hello”。

搜索我能够以某种方式使它工作给 __ init__.py 以下命令行:

import transformations.translate
import transformations.rotate
import transformations.scale

所以当我尝试 运行 来自 main.py 的代码时,代码按预期执行但是 VSCode 给我任何自动完成建议,所以我不知道我是否正确地做事.

正如您在此 image.When i write "transformations." vscode wont give me any prompt to autocomplete "translate" "rotate" or "scale". And if i write the function call of the module anyways 中看到的那样,它 运行 是预期的,但 vscode 无法将其识别为模块或函数,就像它对数学模块中的 sqrt 所做的那样如第二张图片所示,其中“sqrt”为黄色。

所以,基本上,总而言之,代码按我想要的方式工作,但我不确定我是否正确地做事,因为 vscode 自动完成器和颜色格式化程序没有检测包文件夹中的脚本.

提前致谢!

因为您没有将它们作为模块导入到 __init__.py 文件中。您可以使用 from ...import... 形式导入到 __init__.py 文件中。如下图

from transformations import translate
from transformations import rotate
from transformations import scale

希望对您有所帮助。