导入tqdm会禁用使用termcolor的文本格式

时间:2017-09-26 18:29:19

标签: python python-3.x terminal pycharm tqdm

我认为我的问题与this issue

平行

我使用termcolor格式化终端文本。 termcolor基本上只是将您的字符串包装在终端然后解释的ANSI代码中。摘录

from termcolor import cprint

cprint('Hello, World!', 'green', attrs=['bold'])

green text

工作正常,但导入tqdm会产生白色文字:

from tqdm import tqdm
from termcolor import cprint
cprint('Hello, World!', 'green', attrs=['bold'])

white text

ANSI代码仍然存在,但终端不再解析它们。

遗憾的是,{p> tqdm根深蒂固在我的包裹中,所以我无法摆脱导入。什么是更改行为的终端包,以及如何在需要时禁用它?

在Windows 10上使用python 3.5,tqdm 4.15,PyCharm 2017.2.3

1 个答案:

答案 0 :(得分:1)

问题不在于tqdm,而在内部使用了colorama。在Windows / PhCharm上,colorama.init()方法存在已知问题(请参阅https://youtrack.jetbrains.com/issue/PY-16927https://github.com/tartley/colorama/issues/79

幸运的是,只要你使用.init(strip=False)一切正常,colorama人就提供了一种方便的.deinit()方法来反转导入时tqdm使用的任何内容。以下作品:

from tqdm import tqdm
import colorama
from termcolor import cprint

colorama.deinit()
colorama.init(strip=False)
cprint('Hello, World!', 'green', attrs=['bold'])