尝试import
来自别名 - 这在scala
中很常见,我很惊讶地看到以下结果:
创建别名
import numpy as np
使用别名导入其包含的模块
from np import linalg
ImportError: No module named np.linalg
python中是否有其他语法/等效项可用于导入模块?
答案 0 :(得分:16)
使用locale
不创建别名。你误解了导入系统。
导入有两件事:
import module as name
中。这只做一次;后续导入重新使用已加载的模块对象。 sys.modules
语法允许您在最后一步控制名称。
对于as name
语法,您仍需要命名完整模块,因为from module import name
中会查找module
。如果你真的想拥有一个别名,你可以在那里添加额外的引用:
sys.modules
请注意,在此特定情况中,导入import numpy # loads sys.modules['numpy']
import sys
sys.modules['np'] = numpy # creates another reference
也会触发加载numpy
,因此您只需执行以下操作:
numpy.linalg
不需要模块别名。对于不自动导入子模块的软件包,您必须使用:
import numpy as np
# np.linalg now is available
无论如何,和import package as alias
import package.submodule
可用,因为子模块总是作为父包的属性添加。
答案 1 :(得分:1)
我对你的例子的理解是,既然你已经导入了numpy,你就不能用别名导入它,因为它已经导入了linalg部分。