【问题标题】:strptime throws error when run in docker containerstrptime 在 docker 容器中运行时抛出错误
【发布时间】:2020-01-15 09:42:14
【问题描述】:

当我跑步时

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'

怎么可能?

【问题讨论】:

  • 改用'2020-01-15 09:20:00.00 +0000', '%Y-%m-%d %H:%M:%S.%f %z'
  • 能否添加本地机器的python版本和容器中的python版本,以及您使用的是哪个docker镜像?

标签: python datetime strptime


【解决方案1】:

怎么可能?

我假设您正在某个 IDE 或 Jupyter 中开发 sn-ps,而不是将其粘贴到在容器中运行的代码中。如果是这样,请确保在您的容器映像中使用相同的 venv,以便在本地开发时使用,以避免出现此类问题,这些问题可能会导致调试繁琐。

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

Here 是关于如何设置 Docker 文件的详尽指南,您可以完全控制所使用的python 版本,我觉得这很有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 2019-09-30
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多