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

时间:2009-08-31 03:51:50

标签: python python-import

我不知道在这里粘贴所有代码是否可行,但我正在查看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 个答案:

答案 0 :(得分:5)

example.py包含import语句,内容如下:

from libcloud.drivers import EC2, Slicehost, Rackspace

这意味着EC2类是从libcloud.drivers模块导入的。但是,在这种情况下,libcloud.drivers实际上是(Python 包含模块),这意味着{{1应该在EC2中的文件__init__.py中定义,但事实并非如此。这意味着在这种特定情况下,他们的示例代码实际上是错误的。 (我下载代码并在运行libcloud/drivers/时出现导入错误,如您所见,文件example.py根本不包含任何定义,最不包含libcloud/drivers/__init__.py定义。 )

答案 1 :(得分:0)

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

from libcloud.drivers import EC2, Slicehost, Rackspace

python'import'语句从其他python模块引入该类,在本例中是libcloud.drivers模块。