今天遇到一个超级低级的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】
我遇到跟你一模一樣的問題 想說為什麼module一直不見 感謝你