python import 模块异常问题

时间:2021-10-08 00:21:07

新项目开始了,(tornado,python)

结果出现了一个比较诡异的问题。

import 自己的在conf文件夹下配置文件settings的时候,

from conf.settings import *

在handler层引用成功,但是在model文件夹下,import该文件报错,settings not found。

根据以往经验,import 模块not found,一般是路径错误,文件名错误,或者该文件夹下缺少__init__.py文件。

检查了这三个都没有问题,于是纠结了好久。。。。

问了同事,发现出问题的原因是,有人在该文件夹下添加了一个名为conf.py的文件。

这就导致,python import的过程中,从相同的文件夹下conf.py 去查找名为settings的模块。。。。

而不是在conf文件夹下查找settings.py文件。。。。

所以导致问题的原因就是python import的顺序问题。

默认import 的过程,是先查询该模块是否是内建模块,

其次是,该文件的同级目录查找该模块,找到则返回,

接下在,回归到项目的根目录文件,根据sys.path的顺序查找该文件,直到找到第一个,立即返回。

注:多个文件import同一个moudle,只会生成一个对象。

这篇blog写的不错~http://www.iteye.com/topic/576735