【发布时间】:2020-07-05 23:09:09
【问题描述】:
我遇到了一个与我在这里看到的其他帖子类似但不同的问题:我正在尝试从嵌套模块导入一个模块,但即使 python linter 可以很好地提取所有内容,我也不能由于导入错误执行文件,找不到模块。
ParentFolder /
|__ContainerFolder
|__ __init__.py
|__ Camera/
|__ __init__.py
|__ CameraService.py
|__ Data.py
|__ Settings /
|__ __init__.py
|__ SettingService.py
|__ Handler /
|__ __init__.py
|__ Handle.py
|__ Models /
|__ __init__.py
|__ Setting.py
我想要的是在Handle.py 中导入Data.py
我试过了:
from ContainerFolder.Camera.Data import DataClass
linter 说没问题,VS Code 中的自动填充功能让我提前输入,但是,在执行时我得到了 ContainerFolder 模块的ModuleNotFoundError。 我在所有目录中都有一个__init__.py,所以我缺少什么来制作一个要从中导入的模块?
编辑
所以CameraService.py 和SettingService.py 都是 Tornado API,因为它们都作为 main 执行,如何在两者之间共享模块?即Data.py 与Settings 目录下的模块或Setting.py 在Camera 目录下的模块中?
【问题讨论】:
-
您在
Camera级别的__init__.py文件是否真的命名为__inti__.py? -
既然你使用的是VS代码,那么也请使用这行代码'os.getcwd()'检查你是否在正确的目录中。您需要使用“import os”导入“os”模块。
-
你的执行脚本是哪一个?从父目录路径运行执行脚本
-
包含
from ContainerFolder.Camera.Data import DataClass的文件在哪里? -
设置和相机中有一个可执行文件。 Settings 中的那个需要拉入 Data,py 对象。
标签: python python-3.x import module package