2009-01-29 26 views
10

Tôi đã có một gói thiết lập như sau:Python: Vấn đề với module địa phương shadowing module toàn cầu

packagename/ 
    __init__.py 
    numbers.py 
    tools.py 
    ...other stuff 

Bây giờ bên tools.py, tôi đang cố gắng để nhập khẩu các module thư viện chuẩn fractions. Tuy nhiên, mô-đun fractions tự nhập khẩu mô-đun numbers, được cho là một trong thư viện chuẩn.

Vấn đề là nó cố gắng nhập numbers module từ gói của tôi thay vì (tức là tôi numbers.py được shadowing module stdlib numbers), và sau đó phàn nàn về nó, thay vì nhập khẩu các mô-đun stdlib.

Câu hỏi của tôi là, có giải pháp thay thế để tôi có thể giữ cấu trúc hiện tại của gói của mình hay không hoặc là giải pháp duy nhất để đổi tên mô-đun vi phạm của riêng tôi (numbers.py)?

+0

Xin lỗi, nên đã đọc TFQ triệt để hơn. Dù sao, tôi đang cố gắng để tái tạo vấn đề bây giờ, nhưng tôi không thể. Làm thế nào để bạn thực thi mã khi lỗi xảy ra? Tôi chỉ có thể tái tạo nó khi tôi đang chạy mã từ bên trong gói. –

Trả lời

4

Tôi cố gắng tránh che giấu thư viện chuẩn. Làm cách nào để đổi tên mô-đun của bạn thành "_numbers.py"?

Và tất nhiên, bạn vẫn có thể làm:

import _numbers as numbers