Pythonic方式编写包以便于导入

rob*_*ntw 5 python python-module package

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

daterangeparser/
   __init__.py
   parse_date_range.py
   test.py
Run Code Online (Sandbox Code Playgroud)

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

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

目前我必须这样做from daterangeparser.parse_date_range import parse,这似乎相当笨重.我宁愿做from daterangeparser import parse,这似乎更简单,更pythonic,但我似乎无法弄清楚如何使这个工作(我需要把其他东西__init__.py?或者,有没有更好的方法来做到这一点?

Gar*_*tty 6

你可以简单地添加:

from .parse_date_range import parse
Run Code Online (Sandbox Code Playgroud)

进入__init__.py允许这种用法.这是最好的方式.

如果您需要,也可以使用绝对导入:

from daterangeparser.parse_date_range import parse
Run Code Online (Sandbox Code Playgroud)

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


ron*_*akg 1

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

您可以将所有代码从parse_date_range模块移至__init__,然后您可以parsefrom daterangeparser import parse.