用Pythonic的方式编写软件包以便轻松导入。

5

我有一个非常简单的包,最终想通过PyPI发布。这个包的目录树如下:

daterangeparser/
   __init__.py
   parse_date_range.py
   test.py

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

我想知道最简单、最符合Python风格的方法来设置包,以便轻松导入 parse 函数,该如何做呢?

目前,我需要执行 from daterangeparser.parse_date_range import parse,这似乎有些笨拙。我更愿意执行 from daterangeparser import parse,这似乎更简单、更符合Python风格,但我似乎无法弄清楚如何使其工作(我需要在 __init__.py 中放置其他内容吗?或者,有更好的方法吗?

3个回答

6
你可以简单地添加以下内容:
from .parse_date_range import parse

__init__.py中添加代码以允许此用法。这是最好的方法。

如果您希望,还可以使用绝对导入:

from daterangeparser.parse_date_range import parse

任何一种选择都会将parse()函数放入daterangeparser命名空间中,这正是您想要的。

1
将以下内容放入__init__.py中:
from daterangeparser.parse_date_range import parse

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


1

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

你可以将 parse_date_range 模块中的所有代码移动到 __init__ 中,然后可以像这样导入 parsefrom daterangeparser import parse


这是良好的Python编程实践吗?我认为__init__.py应该保留用于管理类型的事情? - robintw
看看这个线程 - https://dev59.com/oW025IYBdhLWcg3wvIgo。 在你的情况下,我认为在“__init__”中放置“parse_date_range”的内容是可以的。 - ronakg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接