Python:`来自x import*`不导入所有内容

var*_*esa 8 python python-import

我知道这import *很糟糕,但是当我觉得懒得键入或记住进口时,我有时会用它来快速进行原型设计

我正在尝试以下代码:

from OpenGL.GL import *

shaders.doSomething()
Run Code Online (Sandbox Code Playgroud)

它会导致错误:`NameError:全局名称'着色器'未定义'

如果我更改导入:

from OpenGL.GL import *
from OpenGL.GL import shaders

shaders.doSomething()
Run Code Online (Sandbox Code Playgroud)

错误消失了.为什么不*包括shaders

rni*_*nty 9

如果shaders是子模块并且未包含在__all__子模块,from … import *则不会导入它.

是的,它是一个子模块.


aIK*_*Kid 5

shaders是一个子模块,而不是一个函数。

该语法from module import something不导入子模块(正如另一个答案所述,未在 中定义__all__)。

要获取该模块,您必须专门导入它:

from OpenGL.GL import shaders
Run Code Online (Sandbox Code Playgroud)

或者,如果您只想拥有以下几个功能shaders

from OpenGL.Gl.shaders import function1, function2, function3
Run Code Online (Sandbox Code Playgroud)

如果你想拥有 的所有功能shaders,请使用:

from OpenGL.Gl.shaders import *
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!