【问题标题】:setup.py put top level module in subdirectorysetup.py 将顶级模块放在子目录中
【发布时间】:2021-01-09 21:50:51
【问题描述】:

我有一个看起来像这样的项目:

tool.py
utils/
    tool2.py
    tool3.py

我想将它们捆绑到一个发行版中,以便我可以从命令行调用tooltool2tool3。但到目前为止,我无法弄清楚如何在不创建新的 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

标签: python pip setup.py


【解决方案1】:

我通过以下方式解决了这个问题:

[options]
scripts =
    dist_scripts/tool
    dist_scripts/tool2
    dist_scripts/tool3

dist_scripts/tool 是到 tool.py 的相对软链接,等等。似乎工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 2013-01-11
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多