如何强制setup.py自动生成具有无缓冲输出模式的控制台脚本?

11 浏览
0 Comments

如何强制setup.py自动生成具有无缓冲输出模式的控制台脚本?

在Python 3中,我了解到构建Python命令行脚本的推荐方式是将其视为Python包的“入口点”,然后使用setup.py来自动生成实际的脚本,该脚本基于包中的某个main()函数。

我找到了一些不错的教程这里这里这里,它们解释了如何做到这一点。

自动生成脚本的问题是,我不确定如何控制脚本顶部通常出现的“shebang”行的内容(例如#!/usr/bin/env python)-这部分是自动生成的。

我想设计命令行脚本,使得“shebang”行自动调用带有某些默认启用的Python标志的python

具体而言,我想以python -u的方式运行脚本,以关闭stdout缓冲,如这里所述。

我需要在setup.py文件中放入什么内容,以告诉setuptools为我执行这个操作呢?当然,我可以在自动生成的脚本之后手动编辑它,但这似乎完全违背了自动生成控制台脚本的目的。是否有一种方法可以做到这一点,或者这只是使用“包入口点”模型创建命令行脚本的一个基本限制?

0
0 Comments

问题的原因是想要强制setup.py在自动生成控制台脚本时使用无缓冲输出模式。为了解决这个问题,有两种常见的方法。

第一种方法是通过编程方式实现。具体实现方法可以参考Stack Overflow上的一个答案,链接为https://stackoverflow.com/a/5443807/5682996。这个方法的基础是另一个答案,链接为https://stackoverflow.com/a/882060/5682996。

第二种方法是修改sys.executable或提供'execute'参数。具体实现方法可以参考Stack Overflow上的一个答案,链接为https://stackoverflow.com/a/17329493/5682996。需要注意的是,我不确定这种方法是否适用于'-u'选项。

0