【问题标题】:Python modules import errorPython模块导入错误
【发布时间】:2023-03-03 00:03:02
【问题描述】:

对我来说很奇怪:

# 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=禁用

【问题讨论】:

    标签: python linux centos


    【解决方案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,不客气:也考虑接受答案(谢谢,但接受是关键:这是礼仪!-)。只需点击答案左上角数字下方的复选标记图标即可。
    猜你喜欢
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 2014-03-05
    相关资源
    最近更新 更多