UnicodeEncodeError: 'ascii' codec can't encode characters in position 5-44: ordinal not in range(128)
环境
通过腾讯云CloudShell登陆轻量应用服务器,显示环境变量是:
Last login: Thu Apr 21 11:24:29 2022 from 159.x.y.z
-bash: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8)
-bash: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8)
/bin/sh: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8)
-bash: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8)
问题:
build django app的images时发生错误:
[root@VM-4-9-centos django_docker]# docker-compose build
/bin/sh: warning: setlocale: LC_ALL: cannot change locale (C.UTF-8)
db uses an image, skipping
Building web
Step 1/9 : FROM python:3.8
---> cf0ca5be5f0b
Step 2/9 : ENV PYTHONDONTWRITEBYTECODE=1
---> Running in 99869918055e
Removing intermediate container 99869918055e
---> b4e4163a3257
Step 3/9 : ENV PYTHONUNBUFFERED=1
---> Running in c95226cdaca0
Removing intermediate container c95226cdaca0
---> c9e8a605d019
Step 4/9 : workdir /code
---> Running in 3d1dcbfeabf6
Removing intermediate container 3d1dcbfeabf6
---> a9927cb5996a
Step 5/9 : copY . /code/
---> fd886bca8839
Step 6/9 : copY ./deploy/entrypoint.sh /
---> b552493cfe3d
Step 7/9 : RUN pip config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple
---> Running in f36088a6dff4
Writing to /root/.config/pip/pip.conf
Removing intermediate container f36088a6dff4
---> 7eddf2896270
Step 8/9 : RUN pip install -r requirements.txt
---> Running in 767c0524e983
Looking in indexes: https://mirrors.cloud.tencent.com/pypi/simple
Collecting django~=3.2.5
Downloading https://mirrors.cloud.tencent.com/pypi/packages/c3/68/b63abc009adee25c1bd266b3740e173eab656608cf21641594a37e02cf57/Django-3.2.13-py3-none-any.whl (7.9 MB)
Traceback (most recent call last):
File "/usr/bin/docker-compose", line 11, in <module>
load_entry_point('docker-compose==1.18.0', 'console_scripts', 'docker-compose')()
File "/usr/lib/python3.6/site-packages/compose/cli/main.py", line 71, in main
command()
File "/usr/lib/python3.6/site-packages/compose/cli/main.py", line 124, in perform_command
handler(command, command_options)
File "/usr/lib/python3.6/site-packages/compose/cli/main.py", line 254, in build
build_args=build_args)
File "/usr/lib/python3.6/site-packages/compose/project.py", line 364, in build
service.build(no_cache, pull, force_rm, memory, build_args)
File "/usr/lib/python3.6/site-packages/compose/service.py", line 972, in build
all_events = stream_output(build_output, sys.stdout)
File "/usr/lib/python3.6/site-packages/compose/progress_stream.py", line 23, in stream_output
print_output_event(event, stream, is_terminal)
File "/usr/lib/python3.6/site-packages/compose/progress_stream.py", line 90, in print_output_event
stream.write("%s%s" % (event['stream'], terminator))
UnicodeEncodeError: 'ascii' codec can't encode characters in position 5-44: ordinal not in range(128)
解决办法:
执行以下shell命令
export PYTHONIOENCODING=UTF-8
备注
答案来自于 stackoverflow,可惜不是第一名的答案,否则也不会单独开贴记录一下。