Python:`From导入*`不是全部导入
问题描述
我知道import *
不好,但有时当我懒得打字或记不住导入时,我会使用它进行快速原型制作
我正在尝试以下代码:
from OpenGL.GL import *
shaders.doSomething()
它会导致错误:`NameError:未定义全局名称‘shaders’‘
如果我更改导入:
from OpenGL.GL import *
from OpenGL.GL import shaders
shaders.doSomething()
错误消失。为什么*
不包括shaders
?
解决方案
shaders
是子模块,不是函数。
语法from module import something
不导入子模块(正如另一个答案所述,__all__
中没有定义)。
要使用该模块,您必须专门导入它:
from OpenGL.GL import shaders
或者,如果您只想拥有shaders
的几个功能:
from OpenGL.Gl.shaders import function1, function2, function3
如果您想拥有shaders
的所有功能,请使用:
from OpenGL.Gl.shaders import *
希望这能有所帮助!
相关文章