gpt4 book ai didi

Python安装工具: quick way to add scripts without "main" function as "console_scripts" entry points

转载 作者:行者123 更新时间:2023-12-01 06:37:46 25 4
gpt4 key购买 nike

我的请求看起来很不正统,但我想快速打包一个旧的存储库,主要由 python 可执行脚本组成。

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

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

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

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

最佳答案

我刚刚意识到部分答案:

如果模块在顶层执行所有操作,即在导入时,则可以定义一个虚拟的“无操作”main 函数,如下所示:

# Content of mypkg/myscript.py

print("myscript being executed!")

def main():
pass # Do nothing!

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

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

关于Python安装工具: quick way to add scripts without "main" function as "console_scripts" entry points,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59591969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com