【发布时间】:2018-06-26 12:33:45
【问题描述】:
假设我有以下文件,
pkg/
pkg/__init__.py
pkg/main.py # import string
pkg/string.py # print("Package's string module imported")
现在,如果我运行 main.py,它会显示 "Package's string module imported"。
这是有道理的,它按照 link 中的声明工作:
"它会首先在包的目录中查找"
假设我稍微修改了文件结构(添加了一个核心目录):
pkg/
pkg/__init__.py
plg/core/__init__.py
pkg/core/main.py # import string
pkg/string.py # print("Package's string module imported")
现在,如果我运行 python core/main.py,它会加载内置的 string 模块。
在第二种情况下,如果它必须遵守声明“它将首先查看包的目录”不应该加载本地string.py,因为pkg是“包目录”?
我对“包目录”一词的理解是具体而言是根文件夹,其中包含__init__.py 的文件夹集合。所以在这种情况下,pkg 是“包目录”。它适用于main.py,也适用于core/main.py 等子目录中的文件,因为它是这个“包”的一部分。
这在技术上正确吗?
PS:sn-p 代码中# 后面的内容是文件的实际内容(没有前导空格)。
【问题讨论】:
标签: python module python-2.x