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-packagesdns 子目录显然可以满足您的所有需求,而 dev/dnsdns 子目录却没有(它缺少 resolver 模块或 @ 987654330@ 文件指向它,或类似的东西)。 实际上,在工作目录中存在 dns.py 而不是包,这已经足够解释了。如果您希望从当前目录解析导入(如 Python 通常的行为),您当然可以在导入之前修改 sys.path @Choor,不客气:也考虑接受答案(谢谢,但接受是关键:这是礼仪!-)。只需点击答案左上角数字下方的复选标记图标即可。

以上是关于Python模块导入错误的主要内容,如果未能解决你的问题,请参考以下文章

jenkins python模块导入错误

python中动态导入模块

Python DNS模块导入错误

导入 numpy 模块时出现 Python 错误 [重复]

Python模块导入错误

Git子模块的本地导入错误 - Python