首页IT技术编程 › 一个python编程低级错误

一个python编程低级错误

今天遇到一个超级低级的python错误。


首先下载安装模块:

wget http://www.dnspython.org/kits/1.14.0/dnspython-1.14.0.tar.gz

tar zvxf dnspython-1.14.0.tar.gz

cd dnspython-1.14.0

python setup.py install


编写脚本导入模块

vim dns.py

#!/usr/bin/env python

import dns.resolver

#…..(以下省略)


保存退出后运行 python dns.py

结果提示:

ImportError: No module named resolver


可我明明是安装了模块的呀。于是shell下命令行输入python进入对话模式

[root@localhost tmp]# python

Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56)

[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import dns.resolver

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "dns.py", line 3, in <module>

    import dns.resolver

ImportError: No module named resolver


还是一样的错误。后来另外打开一个窗口,重新输入,竟然又可以了:

[root@localhost~]# python

Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56)

[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import dns.resolver

>>> 


仔细一看,原来路径不一样。第一次是在/tmp下,第二次是在/root下,

那明显的就是/tmp下有同名文件了。这才恍然大悟,自己编写的脚本名字和引入的模块名字冲突!

于是小林群把文件名改了:cd /tmp; mv dns.py dns1.py;然后再执行,可是问题依久:

[root@localhost tmp]# python dns1.py

Traceback (most recent call last):

  File "dns1.py", line 3, in <module>

    import dns.resolver

  File "/tmp/dns.py", line 3, in <module>

ImportError: No module named resolver


再ls仔细一看,还有个编译后的dns.pyc存在,赶紧删除了。

重新测试成功。


小结:python引入模块时会优先从当前工作目录查找导入,所以python脚本命名一定不能和要引入的模块重名,并且当前工作目录下也不能有与模块同名的py或pyc文件。

原文出自: http://blog.too2.net/?p=228
转载请注明转自:辛碌力成【http://blog.too2.net】

1 Comments.[ Leave a comment ]

  1. 我遇到跟你一模一樣的問題 想說為什麼module一直不見 感謝你

发表评论