未找到 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
文件放入 View
、ContentLayout
和 UserInput
文件夹中,所有 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
来自.
我正在尝试构建 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
文件夹中,所有 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
来自.