【问题标题】:Python 'Module' object has no Attribute Error - Imported modulePython“模块”对象没有属性错误-导入的模块
【发布时间】:2012-10-31 14:38:28
【问题描述】:

我在 Django 项目中导入和使用 Python 的 dnspython 或 easyzone 模块时遇到问题。我也在 DJango 之外尝试过这个脚本,但遇到了同样的问题,所以我很确定这个问题与框架无关。

我有一个简单的脚本,可以打开并解析区域文件中的 dns 记录。我在导入 easyzone 或 dns 模块时没有问题,但是当我尝试访问其中的任何方法时,我会收到此错误:

Traceback (most recent call last):
    File "fabfile.py", line 6, in <module>
    z = easyzone.zone_from_file('example.com', '/var/namedb/example.com')
AttributeError: 'module' object has no attribute 'zone_from_file'

我已经安装了 dnspython 并通过 easy_install 轻松安装,没有任何问题。我可以在脚本顶部导入模块而不会出错,它甚至会在 IDE 帮助程序中向我显示库的路径。但是,当尝试访问 easyzone 或 dns 中的任何方法时,我得到一个错误,IDE 上的代码完成也不会列出任何方法,这让我相信这是一个路径问题或我是如何导入它们的。

这是我失败的代码:

import os
import csv
import easyzone
import dns

z = easyzone.zone_from_file('example.com', '/var/namedb/example.com')

查看代码中的模块内部,我可以清楚地看到这些方法存在,我做错了什么无法访问它们?

【问题讨论】:

    标签: python django dnspython


    【解决方案1】:

    您需要更正导入;来自开发者sourcecode hosting homepage

    from easyzone import easyzone
    z = easyzone.zone_from_file('example.com', '/var/namedb/example.com')
    

    【讨论】:

    • 该死,我知道这很愚蠢...我很新,从 PHP 开始使用 Python,这两种导入模块的方法的主要区别是什么?为什么“import easyzone”不会自动加载所有内容?
    • @xXPhenom22Xx: import easyzone 仅导入顶级模块,将其添加到同名的本地命名空间中。 from easyzone import easyzone 获取名为easyzone 的对象包含在顶级easyzone 模块 中,并将that 添加到本地命名空间,同样具有相同的名称。由于此特定包的结构,此特定示例有些令人困惑。另一种方法是使用import easyzone 然后easyzone.easyzone.zone_from_file(..)
    • 非常感谢你帮助一个菜鸟
    猜你喜欢
    • 2016-05-01
    • 2019-07-09
    • 2018-09-29
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-31
    相关资源
    最近更新 更多