繁体   English   中英

带有包名的 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 给了我任何自动完成建议,所以我不知道我是否正确地做事。

正如你在这张图片中看到的那样。当我写“转换”时。 vscode 不会提示我自动完成“翻译”“旋转”或“缩放”。 如果我仍然编写模块的函数调用,它会按预期运行,但 vscode 不会像使用数学模块中的 sqrt 那样将其识别为模块或函数,如第二张图所示,它将“sqrt”置于黄色.

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

提前致谢!

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

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

希望这对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM