docker 容器中 运行 时 strptime 抛出错误

strptime throws error when run in docker container

当我运行

from datetime import datetime
print(datetime.strptime('2020-01-15 09:20:00.00+00:00', '%Y-%m-%d %H:%M:%S.%f%z'))

打印出来

2020-01-15 09:20:00+00:00

当我 运行 一个具有完全相同行的 docker 容器时,它会抛出此错误:

File "/vdp/base_functions.py", line 9, in <module>
j2lm@VB    |     print(datetime.strptime('2020-01-15 09:20:00.00+00:00', '%Y-%m-%d %H:%M:%S.%f%z'))
j2lm@VB    |   File "/usr/lib/python3.6/_strptime.py", line 565, in _strptime_datetime
j2lm@VB    |     tt, fraction = _strptime(data_string, format)
j2lm@VB    |   File "/usr/lib/python3.6/_strptime.py", line 362, in _strptime
j2lm@VB    |     (data_string, format))
j2lm@VB    | ValueError: time data '2020-01-15 09:20:00.00+00:00' does not match format '%Y-%m-%d %H:%M:%S.%f%z'

怎么可能?

How can that be?

我假设您正在 IDE 或 Jupyter 中开发片段,而不是将其粘贴到容器中 运行 的代码中。如果是这样,请确保在您用于本地开发的容器映像中使用相同的 venv,以避免出现此类调试起来很乏味的问题。

如果我使用 python 3.7 我无法重现错误,因此您可以通过使用最新的 docker 图像和 运行 脚本来解决错误更新的 python 版本(您使用的是 3.6)。

Here 是关于如何设置 Docker 文件的复杂指南,您可以完全控制使用哪个版本的 python,我发现它非常有用有帮助。