在Python中,嵌套包是否必须始终位于嵌套文件夹中?
有人能举一个例子,当你用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
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之类的导入。此外,您还可以从反向导入。