导入带有文件名的模块不起作用?

时间:2019-09-23 14:25:18

标签: python import

我正在尝试在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,它可以工作。 我不知道如何处理两种导入方式。

0 个答案:

没有答案