2014-06-12 14 views
6

Tại sao mã đầu tiên không hoạt động trong khi mã thứ hai hoạt động?Tại sao nhập khẩu không phải lúc nào cũng nhập các gói lồng nhau?

mã đầu tiên:

import selenium 

driver = selenium.webdriver.Firefox() 

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

mã thứ hai:

from selenium import webdriver 

driver = webdriver.Firefox() 
+1

Tôi cũng tò mò về điều này. Tôi đã nhận thấy rằng iPython Notebook bỏ sót mọi thứ khi bạn nhập một mô-đun, ngay cả khi bạn 'từ nhập mô-đun *' ... – Engineero

+1

Với giá trị của nó, '__init __. Py' của selen chỉ là' từ selenium selenium'. Nó không nhập bất cứ thứ gì khác. – Michael

+1

@Michael ... do đó có nghĩa là người ta có thể muốn viết 'từ selenium.selenium selen nhập khẩu: D –

Trả lời

12

gói lồng nhau không tự động nạp; không cho đến khi bạn nhập selenium.webdriver là nó có sẵn dưới dạng thuộc tính. Nhập chỉselenium là không đủ.

Làm điều này:

import selenium.webdriver 

driver = selenium.webdriver.Firefox() 

Đôi khi gói bản thân sẽ nhập khẩu một gói lồng nhau trong initializer __init__.py gói; os nhập os.path, vì vậy, os.path sẽ có sẵn ngay cả khi bạn chỉ nhập os.

Các vấn đề liên quan