在脚本的shebang行中添加Python参数(由buildout和zc.recipe.egg:scripts编写的脚本)

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

[使用扩展构建脚本时如何为Python指定参数?

这是我的buildout.cfg:

[buildout]
parts = python
develop = .

[python]
recipe = zc.recipe.egg:scripts
eggs = myproject

和setup.py:

from setuptools import setup, find_packages

setup(
    name = 'myproject',
    packages = find_packages(),
    entry_points = """
    [console_scripts]
    myscript = myproject:main
    """,
)

我通过此配置得到以下shebang:

$ pip install .
$ head -n1 /usr/local/bin/myscript
#!/usr/bin/python

我想要这个:

#!/usr/bin/python -u

如何做?我尝试将arguments = -uinterpreter = python -u添加到buildout.cfg。它没有用。

python setuptools buildout
1个回答
3
投票

您可以使用文件编号上的os.fdopen重新打开stdin或stdout,从而从Python脚本中强制执行无缓冲的I / O:>

import sys, os
unbuffered = os.fdopen(sys.stdout.fileno(), 'w', 0)

然后,如果您想使用其他使用stdout或stdin的模块或内建模块,则可以重新分配sys.stdout:

sys.stdout = unbuffered

另请参阅unbuffered stdout in python (as in python -u) from within the program

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