Python导入 - 多级导入并不总是有效

时间:2015-04-10 12:37:00

标签: python boto python-import

我在其他情况下看到了这种行为,所以我不相信它boto具体,但我将此问题标记为boto,因为这是我的地方最近看到了这个问题。当我执行以下操作时,它适用于某些环境,但不是全部:

>>> import boto
>>> s3_conn = boto.s3.connection.S3Connection()

某些环境允许这样做,但其他环境会回复此例外:

AttributeError: 'module' object has no attribute 'connection'

但是,以下内容适用于所有环境(或者至少是我拥有的少数情况):

>>> from boto.s3.connection import S3Connection
>>> s3_conn = S3Connection(access_key_id,secret_access_key)

我也与其他图书馆见过这种情况,而不仅仅是boto。任何人都可以了解幕后发生的事情,导致第一种情况并不总是有效吗?

1 个答案:

答案 0 :(得分:1)

进行类似

的导入
>>> import boto

为您提供boto包。除非boto明确导入子模块,否则不会使用此语句导入任何子模块。如果它们之前已经导入过,那么它们也可用于此导入。

>>> from boto.s3.connection import S3Connection
另一方面,

将连续导入所有子模块。

顺便说一下:

>>> import boto
>>> s3_conn = boto.connect_s3

也有助于您解决此特定问题。