Python 'from x import y' 对比 'from .x import y'
Python 'from x import y' vs 'from .x import y'
谁能解释一下它们之间的区别?
from x import y
from .x import y
似乎只有当 x
在 PYTHONPATH
或当前工作目录中时,#1 才会从 x
导入,但我没有看到任何参考文档中的语法 https://docs.python.org/3/reference/import.html
这些属于“相对进口”,位于您链接的文档的第 5.7 节中:https://docs.python.org/3/reference/import.html#package-relative-imports
您还可以查看 PEP-382 了解相对导入及其用途的基本原理。
Python 有多种查找和导入模块的方法,详见导入文档的 Finders and Loaders 部分。 Finders 使用特定于发行版的目录、冻结模块、PYTHONPATH
中的路径,通常是加载脚本的目录。您可以在 sys.path
和 sys.modules.keys()
.
中获取路径列表
处理 from x import y
python 时检查“x”是否已导入,然后遍历查找器列表以查看哪个查找器为名为“x”的模块提供解决方案.接下来,它检查“x”是否有一个名为“y”的变量。如果没有,它会尝试导入一个相对于它已经找到的“x”的模块“y”。
有关 import 语法和语义的更多详细信息,请参阅“简单语句”部分的 The import statement 小节。
第二个示例仅适用于包中的模块。句点告诉包层次结构在向下返回命名包之前要走多远。一个点表示当前模块目录,每个点向下移动到底部。
谁能解释一下它们之间的区别?
from x import y
from .x import y
似乎只有当 x
在 PYTHONPATH
或当前工作目录中时,#1 才会从 x
导入,但我没有看到任何参考文档中的语法 https://docs.python.org/3/reference/import.html
这些属于“相对进口”,位于您链接的文档的第 5.7 节中:https://docs.python.org/3/reference/import.html#package-relative-imports
您还可以查看 PEP-382 了解相对导入及其用途的基本原理。
Python 有多种查找和导入模块的方法,详见导入文档的 Finders and Loaders 部分。 Finders 使用特定于发行版的目录、冻结模块、PYTHONPATH
中的路径,通常是加载脚本的目录。您可以在 sys.path
和 sys.modules.keys()
.
处理 from x import y
python 时检查“x”是否已导入,然后遍历查找器列表以查看哪个查找器为名为“x”的模块提供解决方案.接下来,它检查“x”是否有一个名为“y”的变量。如果没有,它会尝试导入一个相对于它已经找到的“x”的模块“y”。
有关 import 语法和语义的更多详细信息,请参阅“简单语句”部分的 The import statement 小节。
第二个示例仅适用于包中的模块。句点告诉包层次结构在向下返回命名包之前要走多远。一个点表示当前模块目录,每个点向下移动到底部。