未找到 python 模块中的意外行为

Unexpected behaviour in python module not found

我正在尝试构建 PyQt5 GUI 应用程序。我在 Centos-8 上安装了 python3.6 和 pyqt5。 目录结构如下:

Workspace/
├── app.py
├── Controller
├── Model
└── View
    ├── ContentLayout
    │   ├── UserActions
    │   │   └── ButtonLayout.py
    │   └── UserInput
    │       └── TextInputLayout.py
    ├── FooterLayout
    ├── HeaderLayout
    ├── mainMenu.py

app.py:

# This is main application
from View.mainMenu import MenuDesign

if __name__ == "__main__":
    test = MenuDesign()
    test.genereateLayout()

mainMenu.py:

from ContentLayout.UserInput.TextInputLayout import TextInput
from PyQt5.QtWidgets import QMainWindow

class MenuDesign(QMainWindow):
    def __init__(self):
        super().__init__()
        pass

    def genereateLayout(self):
        self.userinput = TextInput()
        self.userinput.initialize_label()
        self.userinput.initialize_textinput()
        print("Function called from TextInputLayout")

TextInputLayout.py:

# This is class for designing layouts for text input boxes and status bar.
class TextInput:
    """This is main class for user inputs."""
    def __init__():
        pass

    def initialize_label(self):
        print("Function is printing from TextInputLayout")
        pass

    def initialize_textinput(self):
        print("Function is printing textinput from TextInputLayout")
        pass

当我 运行 应用程序时,出现以下错误:

Traceback (most recent call last):
  File "app.py", line 1, in <module>
    from View.mainMenu import MenuDesign
  File "/home/amarjeets/Workspace/View/mainMenu.py", line 2, in <module>
    from ContentLayout.UserInput.TextInputLayout import TextInput
ModuleNotFoundError: No module named 'ContentLayout'

我尝试将 __init__.py 文件放入 ViewContentLayoutUserInput 文件夹中,所有 permutation/combination 仍然是相同的错误。
在像我这样的给定项目 folder/file 结构的 python 中导入 module/class/function 时,是否需要遵循任何规则或一般准则?
并且
如果我还有一个文件,即 ContentLayout 文件夹中的 consolidatedLayout.py 以及所有其他文件,那么如何从 ButtonLayout.py 或 [=22 导入模块=] 在 consolidatedLayout.py

我有以下文件夹结构:

C:.
│   app.py
│   __init__.py
│
└───View
    │   MainScript.py
    │   __init__.py
    │
    └───Folder1
            sub1.py
            __init__.py

app.py:

from View.MainScript import Test

print(Test.x)
Test.p()

MainScript.py:

from View.Folder1.sub1 import printIt

class Test:
    x = 123
    p = printIt

sub1.py:

def printIt():
    print("printed inside of sub1.py")

当我启动时 app.py这是输出:

123
printed inside of sub1.py

请注意,MainScript 中的导入是 from View.Folder1.sub1 import printIt,其中 View 是“上方”文件夹,即您正在导入的 module来自.