Alpine上带有pt_BR语言环境的Python仍然以英语输出

Alpine上带有pt_BR语言环境的Python仍然以英语输出,python,docker,locale,alpine,Python,Docker,Locale,Alpine,我在python:3.6-alpine上运行了一个docker,我曾经让区域设置转到pt\u BR。 问题是我的LocaleHTMLCalendar没有在docker上以葡萄牙语显示我的输出(如果我在我的机器上运行,它会工作) 这是我的Dockerfile: FROM python:3.6-alpine as BUILD RUN apk --no-cache add ca-certificates wget && \ wget https://github.com/sge

我在
python:3.6-alpine
上运行了一个docker,我曾经让区域设置转到
pt\u BR
。 问题是我的
LocaleHTMLCalendar
没有在docker上以葡萄牙语显示我的输出(如果我在我的机器上运行,它会工作)

这是我的Dockerfile:

FROM python:3.6-alpine as BUILD
RUN apk --no-cache add ca-certificates wget && \
    wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.25-r0/glibc-2.25-r0.apk && \
    wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.25-r0/glibc-bin-2.25-r0.apk && \
    wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.25-r0/glibc-i18n-2.25-r0.apk && \
    apk add --allow-untrusted glibc-bin-2.25-r0.apk glibc-i18n-2.25-r0.apk glibc-2.25-r0.apk

COPY ./locale.md /locale.md
RUN cat locale.md | xargs -i /usr/glibc-compat/bin/localedef -i {} -f UTF-8 {}.UTF-8
ENV LANG=pt_BR.UTF-8 \
    LANGUAGE=pt_BR.UTF-8 \
    LC_ALL=pt_BR.UTF-8
COPY . /app/
EXPOSE 8000
CMD ["./start.sh"]
因此,如果我在docker上运行此操作:

>>> import locale
>>> locale.getlocale()
('pt_BR', 'UTF-8')
>>> import calendar
>>> x = calendar.LocaleHTMLCalendar()
>>> x.formatmonth(2019,2)
'<table border="0" cellpadding="0" cellspacing="0" class="month">\n<tr><th colspan="7" class="month">February 2019</th></tr>\n<tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr>\n<tr><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="fri">1</td><td class="sat">2</td><td class="sun">3</td></tr>\n<tr><td class="mon">4</td><td class="tue">5</td><td class="wed">6</td><td class="thu">7</td><td class="fri">8</td><td class="sat">9</td><td class="sun">10</td></tr>\n<tr><td class="mon">11</td><td class="tue">12</td><td class="wed">13</td><td class="thu">14</td><td class="fri">15</td><td class="sat">16</td><td class="sun">17</td></tr>\n<tr><td class="mon">18</td><td class="tue">19</td><td class="wed">20</td><td class="thu">21</td><td class="fri">22</td><td class="sat">23</td><td class="sun">24</td></tr>\n<tr><td class="mon">25</td><td class="tue">26</td><td class="wed">27</td><td class="thu">28</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td><td class="noday">&nbsp;</td></tr>\n</table>\n'
导入区域设置 >>>locale.getlocale() ('pt_BR'、'UTF-8') >>>导入日历 >>>x=calendar.LocaleHTMLCalendar() >>>十个月(2019,2) “\n 2019年2月\n上周四星期日\n 123\n45678910\n11121314151617\n18192021222324\n25262728\n\n” 你可以看到我的输出是英语而不是葡萄牙语

你知道我错过了什么吗

编辑

这是我的docker运行命令:
docker run--env LANG=pt_BR.UTF-8--env LANGUAGE=pt_BR.UTF-8--env LC_ALL=pt_BR.UTF-8--env LC_TIME=pt_BR.UTF-8-p 8000:8000 myapp:locale

这看起来像是Python中的一个bug。此函数docstring与它实际执行的操作不一致,并且它不使用语言以外的任何其他环境变量。您可以尝试在容器内调用此函数并检查返回的值吗?作为一种解决方法,您可以显式传递区域设置:
x=calendar.LocaleHTMLCalendar(locale='pt_BR')
(顺便说一句,它在内部使用
LC_TIME
用于区域设置)我尝试了一个名为LC_TIME的环境,并且
x=calendar.LocaleHTMLCalendar>(locale='pt_BR')
,两个workedI都没有添加我的docker run命令。@Marat您希望我在容器中运行哪个函数?它看起来像Python中的一个bug。这个函数docstring与它实际执行的操作不一致,并且它不使用除语言以外的任何其他环境变量。您能尝试在容器中调用这个函数并检查返回值吗ed值?作为一种解决方法,您可以显式传递区域设置:
x=calendar.LocaleHTMLCalendar(locale='pt\u BR')
(顺便说一句,它在内部使用
LC\u TIME
作为区域设置)我尝试了一个名为LC\u TIME的环境,并且
x=calendar.LocaleHTMLCalendar(locale='pt\u BR'))
,两个workedI都没有添加我的docker run命令。@Marat您希望我在容器中运行哪个函数?