Python 3.x 未找到python模块中的意外行为
我正在尝试构建一个PyQt5 GUI应用程序。我在Centos-8上安装了python3.6和pyqt5。 目录结构如下:Python 3.x 未找到python模块中的意外行为,python-3.x,pyqt5,centos8,Python 3.x,Pyqt5,Centos8,我正在尝试构建一个PyQt5 GUI应用程序。我在Centos-8上安装了python3.6和pyqt5。 目录结构如下: Workspace/ ├── app.py ├── Controller ├── Model └── View ├── ContentLayout │ ├── UserActions │ │ └── ButtonLayout.py │ └── UserInput │ └── TextInputLayout.
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()
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")
# 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
main menu.py:
# This is main application
from View.mainMenu import MenuDesign
if __name__ == "__main__":
test = MenuDesign()
test.genereateLayout()
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")
# 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
TextInputLayout.py:
# This is main application
from View.mainMenu import MenuDesign
if __name__ == "__main__":
test = MenuDesign()
test.genereateLayout()
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")
# 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'
回溯(最近一次呼叫最后一次):
文件“app.py”,第1行,在
从View.Main菜单导入菜单设计
文件“/home/amarjeets/Workspace/View/mainMenu.py”,第2行,在
从ContentLayout.UserInput.TextInputLayout导入TextInput
ModuleNotFoundError:没有名为“ContentLayout”的模块
我尝试将\uuuu init\uuuuuuuy.py
文件放入视图
,内容布局
和用户输入
文件夹,但所有排列/组合仍然存在相同的错误在python中导入一个给定项目文件夹/文件结构(如我的项目文件夹/文件结构)的模块/类/函数时,是否需要遵循任何规则或一般准则?
及
如果我在ContentLayout文件夹中还有一个文件,即
consolidatedLayout.py
,以及所有其他文件,那么如何从ButtonLayout.py
或TextInputLayout.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()
from View.Folder1.sub1 import printIt
class Test:
x = 123
p = printIt
def printIt():
print("printed inside of sub1.py")
MainScript.py
:
from View.MainScript import Test
print(Test.x)
Test.p()
from View.Folder1.sub1 import printIt
class Test:
x = 123
p = printIt
def printIt():
print("printed inside of sub1.py")
sub1.py
:
from View.MainScript import Test
print(Test.x)
Test.p()
from View.Folder1.sub1 import printIt
class Test:
x = 123
p = printIt
def printIt():
print("printed inside of sub1.py")
当我启动app.py时,这是输出:
123
printed inside of sub1.py
请注意,
MainScript
内部的导入是from View.Folder1.sub1 import printIt
,其中View
是“上方”文件夹,它被视为导入的模块。我有以下文件夹结构:
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()
from View.Folder1.sub1 import printIt
class Test:
x = 123
p = printIt
def printIt():
print("printed inside of sub1.py")
MainScript.py
:
from View.MainScript import Test
print(Test.x)
Test.p()
from View.Folder1.sub1 import printIt
class Test:
x = 123
p = printIt
def printIt():
print("printed inside of sub1.py")
sub1.py
:
from View.MainScript import Test
print(Test.x)
Test.p()
from View.Folder1.sub1 import printIt
class Test:
x = 123
p = printIt
def printIt():
print("printed inside of sub1.py")
当我启动app.py时,这是输出:
123
printed inside of sub1.py
请注意,MainScript
内部的导入是from View.Folder1.sub1 import printIt
,其中View
是“上面”的文件夹,这被算作您导入的模块。我认为您必须在app.py
文件夹中有一个\uuuu init\uuuuuuuuuuuupy
,它才能工作。@hampusralson先生。。我也查过了。。。同样的错误。我甚至把\uuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuupy
放在所有文件夹中,但仍然是同一个错误。我认为你必须在app.py
文件夹中有一个\uuuuuuuuuuuuuuuuuuuuuuu。。我也查过了。。。同样的错误。我甚至把\uuuu init\uuuuu.py
放在所有的文件夹中,仍然是相同的错误。谢谢你的回复。因此,我必须从根路径(主线程启动的地方,即app.py)导入模块,或者我只需要从上面的一个文件夹导入?您必须将文件夹结构本身视为一个模块,并且必须指定要导入的文件的“方式”。因此,是的,您必须将其视为您的文件是从“根”文件夹导入的。谢谢您的确认。。。。这真的很有帮助。谢谢你的回复。因此,我必须从根路径(主线程启动的地方,即app.py)导入模块,或者我只需要从上面的一个文件夹导入?您必须将文件夹结构本身视为一个模块,并且必须指定要导入的文件的“方式”。因此,是的,您必须将其视为您的文件是从“根”文件夹导入的。谢谢您的确认。。。。这真的很有帮助。