Python模块导入错误
Posted
技术标签:
【中文标题】Python模块导入错误【英文标题】:Python modules import error 【发布时间】:2011-02-22 23:54:36 【问题描述】:对我来说很奇怪:
# unname -a Linux localhost.localdomain 2.6.18-194.3.1.el5 #1 SMP Thu May 13 13:09:10 EDT 2010 i686 i686 i386 GNU/Linux #密码 /根 # Python Python 2.6.5(r265:79063,2010 年 4 月 11 日,22:34:44) [GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] 在 linux2 上 键入“帮助”、“版权”、“信用”或“许可”以获取更多信息。 >>> 导入 dns >>> [3]+ 停止蟒蛇 # cd /home/user/dev/dns [root@localhost dns]#python Python 2.6.5(r265:79063,2010 年 4 月 11 日,22:34:44) [GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] 在 linux2 上 键入“帮助”、“版权”、“信用”或“许可”以获取更多信息。 >>> 导入 dns 回溯(最近一次通话最后): 文件“”,第 1 行,在 文件“dns.py”,第 1 行,在 导入 dns.resolver ImportError:没有名为解析器的模块 >>> [4]+ 停止蟒蛇 #总结:我无法从不同的路径导入相同的 python 模块。 有任何想法吗? 0_o
附: SELINUX=禁用
【问题讨论】:
【参考方案1】:第一种情况下的dns.__file__
是什么?我怀疑它不是来自您第二次进入 cd
的目录(启动 Python 时的当前目录位于 sys.path
的前面),而是来自包含该关键 @ 的包987654324@ 模块,第二个似乎缺少。
【讨论】:
>>> 导入 dns >>> dns.__file__ '/usr/local/lib/python2.6/site-packages/dns/__init__.pyc' >>> 绝对路径 Bingo:site-packages
的 dns
子目录显然可以满足您的所有需求,而 dev/dns
的 dns
子目录却没有(它缺少 resolver
模块或 @ 987654330@ 文件指向它,或类似的东西)。
实际上,在工作目录中存在 dns.py
而不是包,这已经足够解释了。如果您不希望从当前目录解析导入(如 Python 通常的行为),您当然可以在导入之前修改 sys.path
。
@Choor,不客气:也考虑接受答案(谢谢,但接受是关键:这是礼仪!-)。只需点击答案左上角数字下方的复选标记图标即可。以上是关于Python模块导入错误的主要内容,如果未能解决你的问题,请参考以下文章