在Python中,嵌套包是否必须始终位于嵌套文件夹中?

在Python中,嵌套包是否必须始终位于嵌套文件夹中?,python,Python,有人能举一个例子,当你用Python写下面的内容吗 import p3 from p1.p2 p1,p2不是文件夹而是文件。我试图通过(混乱的?)文档和(较少的)示例来理解文档稀少的导入系统。包和导入在Python中有很好的文档记录 包可以在不一定反映目录结构的层次结构中组成。在您的情况下,包p1正在导入p2,而p2又导入p3。所有这些包都可以位于同一目录中 # p1.py import p2 # p2 is now accessible within this package # p2.p

有人能举一个例子,当你用Python写下面的内容吗

import p3 from p1.p2

p1
p2
不是文件夹而是文件。我试图通过(混乱的?)文档和(较少的)示例来理解文档稀少的导入系统。

包和导入在Python中有很好的文档记录

包可以在不一定反映目录结构的层次结构中组成。在您的情况下,包
p1
正在导入
p2
,而p2又导入
p3
。所有这些包都可以位于同一目录中

# p1.py
import p2 # p2 is now accessible within this package

# p2.py
import p3 # p3 is now accessible within this package

# p3.py
some_variable = 'ding!'
使用此导入层次结构,我可以导入
p1
,并像这样遍历层次结构

import p1
print p1.p2.p3.some_variable
# ding!
或者我可以从层次结构中导入子包

from p1 import p2
# or
from p1.p2 import p3
print p3.some_variable

目录结构可用于更干净地组织包。通过向目录中添加一个
\uuuu init\uuuuuu.py
文件,可以将目录转换为可导入的模块。您可以在这些init文件中执行类似的导入策略。

在哪里遇到这种情况?问题中给出的示例将导致语法错误。从p1.p2导入p3的正确方法是“从p1.p2导入p3”,而不是“从p1.p2导入p3”。您显示的导入实际上不足以执行从p1.p2导入p3之类的导入。此外,您还可以从反向导入