2012-04-28 34 views
5

Tôi có một gói rất đơn giản, mà tôi thậm chí muốn phát hành thông qua PyPI, trong đó có một cây thư mục như sau:cách Pythonic viết gói để dễ dàng nhập khẩu

daterangeparser/ 
    __init__.py 
    parse_date_range.py 
    test.py 

parse_date_range.py định nghĩa một hàm gọi là parse.

Cách đơn giản và dễ nhất để tôi thiết lập gói để nhập dễ dàng chức năng parse là gì và tôi có thể làm như thế nào?

Hiện tại, tôi phải làm from daterangeparser.parse_date_range import parse, điều này có vẻ khá phức tạp. Tôi thích làm from daterangeparser import parse, mà dường như đơn giản và nhiều hơn nữa, nhưng tôi không thể làm việc ra làm thế nào để có được điều này để làm việc (tôi cần phải đặt cái gì khác trong __init__.py? Hoặc, là có một cách tốt hơn để làm điều này ?

Trả lời

1

Bạn có thực sự cần parse_date_range mô-đun không? Tên gói daterangeparser đã chuyển tải ý định, daterangeparser.parse_date_range không có ý nghĩa gì.

Bạn có thể di chuyển tất cả mã từ parse_date_range mô-đun đến __init__ và sau đó bạn có thể nhập parse như from daterangeparser import parse.

+0

Đây có phải là thực hành lập trình Python tốt không? Tôi nghĩ rằng '__init __. Py' có nghĩa là được giữ cho những thứ kiểu admin? – robintw

+0

Hãy xem chủ đề này - http://stackoverflow.com/questions/5831148/why-would-i-put-python-code-in-init-py-files. Trong trường hợp của bạn, tôi nghĩ rằng có thể có nội dung '' parse_date_range'' trong '' __init__''. – ronakg

6

bạn chỉ có thể thêm:

from .parse_date_range import parse 

Into __init__.py để cho phép sử dụng này Đó là cách tốt nhất

bạn cũng có thể sử dụng một khẩu tuyệt đối nếu bạn muốn:..

from daterangeparser.parse_date_range import parse 

Một trong các tùy chọn này sẽ đặt hàm parse() vào không gian tên daterangeparser, đó là những gì bạn muốn.

1

Đặt sau trong __init__.py:

from daterangeparser.parse_date_range import parse 

Sau đó, bạn có thể nhập nó theo cách bạn muốn.

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