当试图import从别名 - 这是常见的scala我很惊讶看到以下结果:
创建别名
import numpy as np
Run Code Online (Sandbox Code Playgroud)
使用别名导入其包含的模块
from np import linalg
ImportError: No module named np.linalg
Run Code Online (Sandbox Code Playgroud)
python中有任何其他语法/等价物用于导入模块吗?
Mar*_*ers 21
使用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
Run Code Online (Sandbox Code Playgroud)
请注意,在这种特定情况下,导入sys.modules也会触发加载numpy,因此您所要做的就是:
import numpy as np
# np.linalg now is available
Run Code Online (Sandbox Code Playgroud)
不需要模块别名.对于不自动导入子模块的软件包,您必须使用:
import package as alias
import package.submodule
Run Code Online (Sandbox Code Playgroud)
并且numpy.linalg随后可无论如何,因为子模块始终作为对父包的属性.
| 归档时间: |
|
| 查看次数: |
7264 次 |
| 最近记录: |