新项目开始了,(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

python import 模块异常问题的更多相关文章

  1. Python import模块

    import模块 一.模块介绍 1.定义 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能), 本质就是.py结尾的python文件(文件名:test.py,对应的模块名:t ...

  2. python import模块熟悉方法

    python import导入的可用模块很多,新增速度较快,无法一次性全部掌握. 掌握熟悉一种模块的方法是非常有价值的技能. 探究模块可以从python解释器入手,具体流程记录如下: 以os模块为例: ...

  3. python import模块的搜索路径

    当在py代码中import所依赖的模块时, python是从哪里找到这些模块呢,即模块的搜索路径是啥? 默认情况下,Python解释器会搜索当前目录.所有已安装的内置模块和第三方模块,搜索路径存放在s ...

  4. 修改python import模块中的变量

    可以直接通过 模块名.变量名=xx 的方式修改模块中的全局变量,测试代码如下 模块:test_model.py x = 111 def inc_x(): global x x = x + 1 测试脚本 ...

  5. 获取 python import模块的路径

    import a_module print a_module.__file__ 上述代码将范围 .pyc 文件被加载的路径,如果需要跨平台解决方案,可用下面代码: import os path = o ...

  6. python import cv2异常(dll load fail / windows server 2008)

    最近服务器迁移,从得win7系统迁移到云服务器器上的windows server2008系统,迁移过程中安装Python的opencv一直出错,不管是用whl安装或者是在线pip安装都报错,尝试打包成 ...

  7. python高级-模块(14)

    一.python中的模块 有过C语言编程经验的朋友都知道在C语言中如果要引用sqrt函数,必须用语句#include <math.h>引入math.h这个头文件,否则是无法正常进行调用的. ...

  8. Python import / pyd / dll

    使用Python import 模块时, 先会在模块的搜索path里依次搜索(前面会覆盖之后出现的同名模块),次序为: 1. 程序的主目录(交互模式下当前的工作目录或 脚本文件所在的目录) 2. 环境 ...

  9. 【Python五篇慢慢弹(4)】模块异常谈python

    模块异常谈python 作者:白宁超 2016年10月10日12:08:31 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondo ...

随机推荐

  1. Java中的字符串常量池

    ava中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid";,另一种就是使用new这种标准的构造对象的方法,如String str = new ...

  2. Android 环境常见问题

    1.启动adb时报: adb server is out of data.kill... ADB server didn't ACK    *failed to start daemon*    er ...

  3. 移动端自动化环境搭建-node.js的安装

    安装node.js A.安装依赖 Appium是使用nodejs实现的,所以node是解释器,首先需要确认安装好 B.安装过程

  4. java 的SYSTEM类【转】

    java 的SYSTEM类[转] Posted on 2009-12-03 16:46 火之光 阅读(728) 评论(0) 编辑 收藏 System类代表系统,系统级的很多属性和控制方法都放置在该类的 ...

  5. c#基础-类型基础深入了解

    对象类型需要动态内存,基础类型需要静态内存 动态内存分配在堆上,静态内存分配在栈上. 静态内存保存着简单的变量,如 int a=0; 值类型:把一个值类型赋值给另外一个值类型,改变其中一个另外一个不会 ...

  6. ComponentCount 与 ControlCount 区别

       ShowMessage(panel.ComponentCount.ToString);  ShowMessage(panel.ControlCount.ToString);componetcou ...

  7. Redis的主从同步复制

    先来看一下Redis的主从同步复制的原理: 在Slave启动并连接到Master之后,它将主动发送一条SYNC命令.此后Master将启动后台存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台 ...

  8. XidianOJ 1096 数的拆分

    题目描述 输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复. 输入 多组数据.每组只有一个整数n,表示待拆分的自然数n. n<=80 输出 每组一个数,即所有方案数. - ...

  9. python异常处理、反射、socket

    一.isinstance 判断对象是否为类的实例 n1 = print isinstance(n1,int) class A: pass class B(A): pass b= B() print i ...

  10. 1-11 ICMP协议

    ICMP协议 IP不提供可靠的传输服务,也不提供端到端或点到点的确认,如果出错可以通过ICMP报告来看,它在IP模块中实现.TCP/IP协议设计了ICMP就是为了弥补IP协议的不足. 它是TCP/IP ...