如何解决未找到 python 模块中的意外行为
我正在尝试构建 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
导入模块 { {1}}
解决方法
我有以下文件夹结构:
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
是“above”文件夹,这被视为您从中导入的 module
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。