无法从其他路径导入类 - ValueError:空模块名称

时间:2014-09-20 01:29:57

标签: python import

我在stackoverflow上关于如何导入类的建议 从根文件夹之外的路径: How to dynamically load a Python class Does python have an equivalent to Java Class.forName()?

不幸的是,这引发了错误: ValueError:空模块名称

据我所知,import不应该返回一个空模块,比如imp中的load_source方法。所以我不明白这个错误,也不了解如何处理它。

我在这里实施的错误是什么? 你能在这里向我倾斜正确的方向吗?

谢谢!

代码:

klass = __import__('..folder.module.Class_A')
some_object = klass()

class class_B(some_object):
    def run(self):
        print ('Test OK!')

导入的类(模块的内容):

class Class_A():
    def __init__(self, arg1, *args):
def run(self):
    pass

1 个答案:

答案 0 :(得分:3)

首先,您没有正确使用导入。

选项1

根据https://docs.python.org/2/library/functions.html#import,您应该这样做:

klass = __import__('folder.module', globals(), locals(), ['Class_A'], -1)

现在,如果您想要Class_A本身,您应该这样做:

some_object = klass.Class_A

然后你可以使用:

继承它
class class_B(some_object):
    def run(self):
        print ('Test OK!')

选项2

from folder.module import Class_A

然后你可以使用:

继承它
class class_B(Class_A):
    def run(self):
        print ('Test OK!')

注意:在folder.module文件夹中应该是python包,模块应该是python模块