我的请求似乎是非正统的,但是我想快速打包一个旧的存储库,主要由python可执行脚本组成。
问题是这些脚本没有设计为模块,因此其中一些直接在模块的顶层执行代码,而另一些具有if __name__=='__main__'
部分。
您如何使用setuptools分发这些脚本,而无需过多重写?
scripts
的scripts
选项下,但是不建议这样做,也不允许我重命名它们。setup()
函数的步骤,也因为某些脚本调用了怪异的递归函数,并对全局变量产生了副作用,所以我有点怕破坏东西。main()
(例如console_scripts而不是"myscript=mypkg.myscript"
)时,在安装后它在逻辑上会抱怨模块不可调用。是否可以通过模块创建脚本?至少当他们有一个"myscript=mypkg.myscript:main"
时?
我刚刚意识到答案的一部分:
[如果模块在顶层执行所有操作,即在导入时执行,因此可以定义一个虚拟的“ no-op” if __name__=='__main__'
函数,如下所示:
main
此解决方案仍然会迫使我将此行添加到现有脚本中,但是我认为这是一种快速但谨慎的解决方案。
尽管代码在# Content of mypkg/myscript.py
print("myscript being executed!")
def main():
pass # Do nothing!
下,但没有解决方案...