有时候,python 处理import 的行为有些诡异。
比如下面的目录结构。
test目录下有一个叫common的目录, test的子目录packA下也有一个同名目录。
当在subA目录下的sa1.py中试图from common.logger import 时发现import的是test目录下的common, 而不是packA目录下的common. 打印sys.path发现test/common路径并不在里面, 反而packA/common是存在的。
为避免纠缠,将packA.common下的logger.py改名为sublogger.py, 再from common.sublogger import 就与期望一致了。
这种问题深究比较费劲, 保险一点的做法还是同一个项目下尽量不要使用同名文件,自己看起来也会更清晰。
test/ # root folder
common/
__init__.py
logger.py
packA/ # package packA
__init__.py
common/
logger.py
subA/ # subpackage subA
__init__.py
sa1.py
sa2.py
网友评论