我正在尝试在python中导入模块,其中用户通过Qt界面选择了所需模块。该模块尚不知道程序何时启动。
我在下面举一个例子。 我的问题是,start.py要使用子文件夹中的module1。该模块1使用另一个子文件夹
中的另一个模块2。└── project
├── subfolder
│ ├── module1.py
│ └── module2.py
└── start.py
module1.py
from . import module2
# import module2
class Class1():
def __init__(self):
self.C1 = module2.Class2()
module2.py
class Class2():
def __init__(self):
self.C2= 0
start.py
import subfolder.module1
import sys
import os
Cstart = subfolder.module1.Class1()
print(Cstart.C1)
(filepath, filename) = os.path.split('subfolder//module1')
sys.path.append(filepath)
(shortname, extension) = os.path.splitext(filename)
Cclass = __import__(shortname)
当我运行start.py文件时,第一次导入可以正常运行
Cstart = subfolder.module1.Class1()
print(Cstart.C1)
但不是第二个
(filepath, filename) = os.path.split('subfolder//module1')
sys.path.append(filepath)
(shortname, extension) = os.path.splitext(filename)
Cclass = __import__(shortname)
我去哪里
回溯(最近通话最近): 文件“ C:/Users/maxime/Desktop/SESAME/PycharmProjects/testimport/start.py”,第12行 Cclass = 导入(简称) 文件“ subfolder \ module1.py”,第1行,在 来自。导入模块2 ImportError:尝试相对导入,但没有已知的父包
但是,如果我将
替换为start.py文件,import sys
import os
(filepath, filename) = os.path.split('subfolder//module1')
sys.path.append(filepath)
(shortname, extension) = os.path.splitext(filename)
Cclass = __import__(shortname)
并使用import module2
而不是from . import module2
导入module2,它可以工作。
我不知道如何处理两种导入方式。