2012-04-28 9 views
5

Mam bardzo prosty pakiet, który w końcu chcesz zwolnić poprzez PyPI, który ma drzewo katalogów tak:pythonowy sposób pisać pakiet na łatwe importowanie

daterangeparser/ 
    __init__.py 
    parse_date_range.py 
    test.py 

parse_date_range.py definiuje funkcję o nazwie parse.

Jaki jest najprostszy i najbardziej pythonic sposób, aby skonfigurować pakiet do łatwego importowania funkcji parse i jak mogę to zrobić?

W tej chwili muszę zrobić from daterangeparser.parse_date_range import parse co wydaje się raczej niezgrabne. Wolę zrobić from daterangeparser import parse, co wydaje się prostsze i bardziej pythonic, ale nie mogę wydawać się pracować, jak sprawić, aby to działało (czy muszę umieścić coś innego w __init__.py? Czy istnieje lepszy sposób na zrobienie tego ?

Odpowiedz

1

Czy naprawdę potrzebujesz modułu parse_date_range? Nazwa pakietu daterangeparser już przekazuje intencję, daterangeparser.parse_date_range nie ma żadnego sensu.

można przenieść cały kod z modułu parse_date_range do __init__ a następnie można zaimportować parse jak from daterangeparser import parse.

+0

Czy to jest dobra praktyka programowania Python? Myślałem, że '__init __. Py' miał być przechowywany dla rzeczy typu administratora? – robintw

+0

Zobacz ten wątek - http://stackoverflow.com/questions/5831148/why-would-i-put-python-code-in-init-py-files. W twoim przypadku myślę, że dobrze jest mieć zawartość '' parse_date_range'' w '' __init__''. – ronakg

6

można po prostu dodać:

from .parse_date_range import parse 

do __init__.py aby umożliwić użycie tego to najlepszy sposób

można również podać bezwzględną importu, jeśli chciał..

from daterangeparser.parse_date_range import parse 

Każda z tych opcji umieszcza funkcję parse() w przestrzeni nazw , co jest tym, czego potrzebujesz.

1

umieścić następujące w __init__.py:

from daterangeparser.parse_date_range import parse 

Następnie można importować tak, jak chcesz.

Powiązane problemy