Pythonic方式编写包以便于导入

时间:2012-04-28 11:42:17

标签: package python python-module

我有一个非常简单的包,我最终希望通过PyPI发布,它有一个如下所示的目录树:

daterangeparser/
   __init__.py
   parse_date_range.py
   test.py

parse_date_range.py定义了一个名为parse的函数。

设置软件包以便轻松导入parse函数的最简单,最pythonic的方法是什么?我该怎么办?

目前我必须做from daterangeparser.parse_date_range import parse,这似乎相当笨重。我宁愿做from daterangeparser import parse,这似乎更简单,更pythonic,但我似乎无法弄清楚如何让它工作(我需要在__init__.py中放入其他东西吗?或者,有更好的方法吗?

3 个答案:

答案 0 :(得分:6)

您只需添加:

from .parse_date_range import parse

进入__init__.py以允许此用法。那是最好的方式。

如果您愿意,也可以使用绝对导入:

from daterangeparser.parse_date_range import parse

这两个选项中的任何一个都将parse()函数放入daterangeparser命名空间,这就是你想要的。

答案 1 :(得分:1)

将以下内容放入__init__.py

from daterangeparser.parse_date_range import parse

然后你可以按照你想要的方式导入它。

答案 2 :(得分:1)

你真的需要parse_date_range模块吗?包名daterangeparser已经传达了意图,daterangeparser.parse_date_range没有任何意义。

您可以将parse_date_range模块中的所有代码移至__init__,然后您可以parse导入from daterangeparser import parse