python中"import something"和"from . import something"的区别?
Difference between "import something" and "from . import something" in python?
目录结构:
| Packages
| noobpy
| __init__.py
| linalg.py
| main.py
linalg.py:
def inv():
print("inv called")
main.py :
import noobpy as np
np.linalg.inv()
在__init__.py中:
当我使用:
import linalg
当运行 main.py
时,它会抛出错误“No module named 'linalg'”
但是当我使用时:
from . import linalg
在 _init_ 内部,它工作得很好,即使我可以在 _init_[ 内部调用 linalg.inv =39=] 在这两种情况下。
(在作为重复关闭之前作为评论发布。)
当您 运行 main.py
时,某些目录已添加到 Python 搜索路径中,导入机制将在其中查找模块。 main.py
本身所在的目录被添加到路径中。在这种情况下,它 仅 包含包 noobpy
。您必须注意,目录 noobpy
本身在搜索路径上 而不是 。
当您尝试使用绝对 import linalg
时,搜索路径上没有目录包含名为 linalg
的模块,因此导入失败。
当您尝试使用相对导入 from . import lining
时,.
指的是当前包,即 noobpy
本身,而 noobpy
是否包含模块 linalg
。
目录结构:
| Packages
| noobpy
| __init__.py
| linalg.py
| main.py
linalg.py:
def inv():
print("inv called")
main.py :
import noobpy as np
np.linalg.inv()
在__init__.py中:
当我使用:
import linalg
当运行 main.py
时,它会抛出错误“No module named 'linalg'”但是当我使用时:
from . import linalg
在 _init_ 内部,它工作得很好,即使我可以在 _init_[ 内部调用 linalg.inv =39=] 在这两种情况下。
(在作为重复关闭之前作为评论发布。)
当您 运行 main.py
时,某些目录已添加到 Python 搜索路径中,导入机制将在其中查找模块。 main.py
本身所在的目录被添加到路径中。在这种情况下,它 仅 包含包 noobpy
。您必须注意,目录 noobpy
本身在搜索路径上 而不是 。
当您尝试使用绝对 import linalg
时,搜索路径上没有目录包含名为 linalg
的模块,因此导入失败。
当您尝试使用相对导入 from . import lining
时,.
指的是当前包,即 noobpy
本身,而 noobpy
是否包含模块 linalg
。