gpt4 book ai didi

python - 更正在 TravisCI 上的 2.7.10 应用程序中打印 unicode 字符时的 unicode 错误

转载 作者:行者123 更新时间:2023-12-01 02:14:26 25 4
gpt4 key购买 nike

我正在尝试在 TravisCI 上使用 Python 2.7.10 在测试运行程序中打印一些 unicode 字符。

在本地(macOS),我可以通过执行以下操作很好地运行它:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

class MyTestCase(unittest.TestCase):
def my_test(self):
for x in alist:
# a long running op
# updates item in list
sys.stdout.write('█')

for x in alist:
if x.success:
print(" ✓ pass {}".format(x.name))
else:
print(" x fail {}".format(x.name, x.err))

但是当我将其推送到 TravisCI 时,它总是会失败,并出现令人讨厌的 ordinal not in range(128) 错误。

我已经尝试过:

  • 将 Travis 环境变量设置为 LC_ALL:C.UTF-8
  • 使用dist: trusty
  • 使用部署:\default_text_charset:'utf-8'
  • 使用six.u(),但会提示TypeError:不支持解码Unicode

这是我的 .travis.yml:

language: python

dist: trusty

python:
- 2.7.10

install:
- pip install --quiet future
- pip install --quiet pyyaml
- pip install --quiet dotmap

script:
- cd appdir; python -m unittest tests

deploy:
default_text_charset: 'utf-8'

最佳答案

在 Python 2 中,sys.stdout.write 接受字节字符串。如果你给它 unicode,它会将它们强制为 str,这显然在这里失败,因为使用了 ASCII。

您可以将 sys.stdout 包装在 TextIOWrapper 中(就像在 Python 3 中所做的那样):

import io
sys.stdout = io.open(sys.stdout.fileno(), 'w', encoding='utf8')

如果您不想覆盖 sys.stdout,请将其保存为其他名称。

关于python - 更正在 TravisCI 上的 2.7.10 应用程序中打印 unicode 字符时的 unicode 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48464972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com