代码之家  ›  专栏  ›  技术社区  ›  Dan.StackOverflow

Python如何调用从未在代码中定义的类?

  •  0
  • Dan.StackOverflow  · 技术社区  · 17 年前

    我不知道在这里粘贴所有代码是否可行,但我正在查看中的代码 this git repo .

    如果你看这个例子,他们会:

    ec2 = EC2('access key id', 'secret key')
    

    …但是没有 EC2 班级。但是,它看起来像 libcloud\providers.py 有一个口述记录了 EC2型 EC2NodeDriver 发现于 libcloud\drivers\ec2.py . 正确的映射是通过 get_driver(provider) ,但该方法似乎未在任何地方调用。

    显然,我对Python不熟悉,但对编程不熟悉。我甚至不知道我应该在文件中查找什么来解决这个问题。

    2 回复  |  直到 7 年前
        1
  •  5
  •   mipadi    17 年前

    example.py 包括一个 import 陈述如下:

    from libcloud.drivers import EC2, Slicehost, Rackspace
    

    这意味着 EC2 类是从导入的 libcloud.drivers 模块。然而,在这种情况下, libcloud.drivers驱动程序 实际上是 包裹 (蟒蛇) 包裹 包含 模块 ,也就是说 EC2 应在文件中定义 __init__.py 在里面 libcloud/drivers/ 但事实并非如此。这意味着在这种特定的情况下,它们的示例代码实际上是错误的。(我下载了代码,运行时出现导入错误 实例 如你所见,文件 libcloud/drivers/__init__.py 不包含任何定义,至少不包含 EC2 定义。

        2
  •  0
  •   Yancy    17 年前

    查看libcloud\examples.py可能会有所帮助。我看到这个:

    from libcloud.drivers import EC2, Slicehost, Rackspace
    

    python“import”语句引入了来自其他python模块的类,在本例中是来自libcloud.drivers模块的类。

    推荐文章