【发布时间】:2021-01-09 21:50:51
【问题描述】:
我有一个看起来像这样的项目:
tool.py
utils/
tool2.py
tool3.py
我想将它们捆绑到一个发行版中,以便我可以从命令行调用tool 或tool2 或tool3。但到目前为止,我无法弄清楚如何在不创建新的 utils python 模块的情况下让 setup.py 包含 utils/ 下的脚本。基本上我想在 setup.cfg 中执行此操作而不更改我的目录布局:
[options.entry_points]
console_scripts =
tool = tool:main
tool2 = tool2:main
tool3 = tool3:main
如果我将我的项目目录展平,以便所有 3 个都在根目录中,它可以工作,但可能有很多实用工具我不想在根目录中发送垃圾邮件。但似乎如果我将它们放在utils 下,setup.py 想要将它们创建为utils 模块下的子模块。
一种可能的解决方法是:
[options]
scripts =
tool.py
utils/tool2.py
utils/tool3.py
但是您必须始终键入 .py 后缀才能从命令行调用,而我宁愿不使用它,这样感觉更“命令行”。
我正在尝试做的事情可能吗?
【问题讨论】:
-
你能导入顶层
__init__.py文件中的子模块吗? -
没有顶级
__init__.py文件,只有setup.py