strptime выдает ошибку при запуске в контейнере docker - PullRequest
1 голос
/ 15 января 2020

Когда я запускаю

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'

Как это может быть?

1 Ответ

1 голос
/ 15 января 2020

Как это может быть?

Я предполагаю, что вы разрабатываете сниппеты в какой-то IDE или Jupyter и затем вставляете их в код, который запускается внутри контейнера. , Если это так, обязательно используйте тот же venv в образе контейнера, который вы используете для локальной разработки, чтобы избежать подобных проблем, которые могут быть утомительными для отладки.

Если я использую python 3.7 Я не могу воспроизвести ошибку, поэтому вы можете устранить ее, просто используя современное docker изображение и запустив скрипт с более свежей python версией (у вас 3.6).

Здесь - это сложное руководство о том, как настроить файл Docker таким образом, чтобы у вас был полный контроль над тем, какая версия python используется, что я нашел очень полезным .

...