pythonsetuptools:添加脚本的快速方法,没有“main”函数作为“console\u scripts”入口点

2024-06-16 11:13:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我的请求似乎不太正常,但我想快速打包一个旧的存储库,它主要由python可执行脚本组成

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

如何使用setuptools分发这些脚本,而不需要太多重写

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

有没有办法从模块中创建脚本?至少当他们有一个if __name__=='__main__'的时候


Tags: 模块代码name脚本if定义main选项
1条回答
网友
1楼 · 发布于 2024-06-16 11:13:52

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

如果模块在顶层执行所有操作,即导入时,那么可以定义一个伪“no op”main函数,如下所示:

# Content of mypkg/myscript.py

print("myscript being executed!")

def main():
    pass  # Do nothing!

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

如果代码在if __name__=='__main__'下,则没有解决方案

相关问题 更多 >