【问题标题】:Why does an import not always import nested packages?为什么导入并不总是导入嵌套包?
【发布时间】:2014-06-12 21:05:37
【问题描述】:

为什么第一个代码不起作用而第二个代码起作用?

第一个代码:

import selenium

driver = selenium.webdriver.Firefox()

AttributeError: 'module' 对象没有属性 'webdriver'

第二个代码:

from selenium import webdriver

driver = webdriver.Firefox()

【问题讨论】:

  • 我也很好奇这个。我注意到当你导入一个模块时 iPython Notebook 会遗漏一些东西,即使你 from module import *...
  • 对于它的价值,硒的__init__.py 只是from selenium import selenium。它不会导入任何其他内容。
  • @Michael ... 所以这意味着人们可能想写from selenium.selenium import selenium :D
  • @BenjaminHodgson,不完全是 - 进口的硒是类。这会引发错误 (ImportError: No module named selenium)...
  • @Michael 我刚试过,对我来说很好用

标签: python python-2.7 python-2.x


【解决方案1】:

嵌套包不会自动加载;直到您导入 selenium.webdriver 才能将其作为属性使用。 导入selenium 是不够的。

这样做:

import selenium.webdriver

driver = selenium.webdriver.Firefox()

有时包本身会在__init__.py包初始化器中导入一个嵌套包; os 导入 os.path,因此即使您只导入 osos.path 也会立即可用。

【讨论】:

    猜你喜欢
    • 2012-03-07
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    相关资源
    最近更新 更多