【发布时间】:2019-10-15 13:05:27
【问题描述】:
我希望使用PyInstaller 冻结使用click 制作的Python CLI。
我发现 this answer 使它可以与点击命令一起使用,不幸的是它不适用于带有子命令的应用程序。
我有以下代码来演示这个问题:
在 cli.py 中
import sys
import click
@click.group()
def bar():
pass
@bar.command()
def baz():
click.echo('yo')
if __name__ == "__main__":
if getattr(sys, 'frozen', False):
bar(sys.argv[1:])
else:
bar()
我运行以下pyinstaller 命令:
pyinstaller --noconfirm --name bar --clean "cli.py"
我得到以下输出:
Traceback (most recent call last):
File "tests\bar\cli.py", line 18, in <module>
File "click\core.py", line 722, in __call__
File "click\core.py", line 696, in main
File "click\core.py", line 621, in make_context
File "click\core.py", line 1015, in parse_args
File "click\utils.py", line 259, in echo
File "click\_compat.py", line 577, in _safe_write
File "colorama\ansitowin32.py", line 40, in write
File "colorama\ansitowin32.py", line 141, in write
File "colorama\ansitowin32.py", line 169, in write_and_convert
File "colorama\ansitowin32.py", line 174, in write_plain_text
File "click\_winconsole.py", line 180, in write
File "click\_compat.py", line 63, in write
File "click\_winconsole.py", line 164, in write
OSError: Windows error 6
[173704] Failed to execute script cli
我在 Windows 10 操作系统上使用 Python 2.7.13。
由于我的工作环境,我无法尝试py2exe、cx-Freeze、briefcase 等。
之前有没有其他人偶然发现过这个问题?
我会尝试使用 argparse 看看是否遇到同样的问题。
【问题讨论】:
-
它正在尝试打印帮助。 Windows 错误 6 是文件句柄无效。你的 colorama 几岁(什么版本)?
-
感谢您的关注。我在 colorama
0.3.9。我尝试升级到0.4.1,但仍然有同样的错误。我也试过argparse,没有错误。我想这是因为argparse没有颜色处理? -
是的,使用该堆栈跟踪,在冻结时似乎与 Windows 10 中的颜色处理不兼容。我还怀疑(调查)即将过时的 Python 版本可能会导致一些问题。
-
抱歉回复晚了,我已经做了一些更多的测试。我找到了this issue,其中详细介绍了一些解决方法,不幸的是没有一个对我有用,我暂时使用 argparse。感谢您的宝贵时间!
标签: python python-2.7 pyinstaller python-click