Python Setuptools:添加不带“主要”功能的脚本作为“ console_scripts”入口点的快速方法

问题描述 投票:0回答:1

我的请求似乎是非正统的,但是我想快速打包一个旧的存储库,主要由python可执行脚本组成。

问题是这些脚本没有设计为模块,因此其中一些直接在模块的顶层执行代码,而另一些具有if __name__=='__main__'部分。

您如何使用setuptools分发这些脚本,而无需过多重写?

  • [我知道我可以将它们放在scriptsscripts选项下,但是不建议这样做,也不允许我重命名它们。
  • [我想跳过在所有这些脚本中定义setup()函数的步骤,也因为某些脚本调用了怪异的递归函数,并对全局变量产生了副作用,所以我有点怕破坏东西。
  • [当我尝试仅提供模块名称作为main()(例如console_scripts而不是"myscript=mypkg.myscript")时,在安装后它在逻辑上会抱怨模块不可调用。

是否可以通过模块创建脚本?至少当他们有一个"myscript=mypkg.myscript:main"时?

python main setuptools entry-point
1个回答
0
投票

我刚刚意识到答案的一部分:

[如果模块在顶层执行所有操作,即在导入时执行,因此可以定义一个虚拟的“ no-op” if __name__=='__main__'函数,如下所示:

main

此解决方案仍然会迫使我将此行添加到现有脚本中,但是我认为这是一种快速但谨慎的解决方案。

尽管代码在# Content of mypkg/myscript.py print("myscript being executed!") def main(): pass # Do nothing! 下,但没有解决方案...

© www.soinside.com 2019 - 2024. All rights reserved.