【发布时间】:2021-04-01 21:28:17
【问题描述】:
我正在尝试构建一个 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 文件放在View、ContentLayout 和UserInput 文件夹中,但所有排列/组合仍然是相同的错误。
在给定项目文件夹/文件结构的python中导入模块/类/函数,我需要遵循任何规则或一般准则吗?
和
如果我在 ContentLayout 文件夹中还有一个文件,即 consolidatedLayout.py 以及所有其他文件,那么如何从 ButtonLayout.py 或 TextInputLayout.py 中的 consolidatedLayout.py 导入模块
【问题讨论】:
-
我认为您必须在
app.py的文件夹中也有一个__init__.py才能正常工作。 -
@HampusLarsson 先生.. 我也检查过那个......同样的错误。我什至把
__init__.py放到所有文件夹中仍然是同样的错误。
标签: python-3.x pyqt5 centos8