没有名为' vmtkactivetubes'

时间:2017-11-02 04:14:53

标签: python spyder vtk

在我的Python代码中,我有:

来自vmtk import vmtkscripts

该程序没有找到问题" vmtkscripts.py"。 但是,在vmtkscripts.py中,我有"

__all__ = ['vmtkactivetubes']

for item in __all__:
    exec('from '+item+' import *')

其中" vmtkactivetubes.py"与" vmtkscripts.py"位于同一文件夹中。

跑完后我得到" ModuleNotFoundError:没有名为' vmtkactivetubes'" 但是,这来自vmtk import vmtkactivetubes"并没有给我任何错误。

如果你能帮助我,我真的很感激,为什么会出现这样的错误?

1 个答案:

答案 0 :(得分:0)

这是范围问题,

尝试使用:

exec('from '+item+' import *', globals())

来自documentation

  

在所有情况下,如果省略可选部分,则执行代码   在目前的范围内。如果只提供全局变量,则必须是a   字典,将用于全局和本地   变量。如果给出全局变量和局部变量,则将它们用于   全局变量和局部变量。如果提供,当地人可以   任何映射对象。请记住,在模块级别,全局和本地   是相同的字典。如果exec获得两个单独的对象作为全局变量   和本地人一样,代码将被执行,好像它嵌入在一个   课程定义。