RecursionError в boto3 с Python 3.11, понижение версии приводит к ошибке ImportError: невозможно импортировать имя «СопоPython

Программы на Python
Ответить
Anonymous
 RecursionError в boto3 с Python 3.11, понижение версии приводит к ошибке ImportError: невозможно импортировать имя «Сопо

Сообщение Anonymous »

Тело
Я запускаю приложение Python с Python 3.11.14 внутри контейнера Docker и сталкиваюсь с проблемами с boto3.

Среда

  • Python: 3.11.14
  • boto3: 1.34.0
  • botocore: 1.34.0
  • urllib3: 1.26.18
  • ОС: redhat/ubi10-minimal
Проблема 1: ошибка рекурсии с последней версией boto3
При импорте или инициализации ресурса S3:
import boto3

voice_s3 = boto3.resource("s3")

Я получаю следующую ошибку:
RecursionError: maximum recursion depth exceeded
File ".../botocore/httpsession.py", line 349, in _get_ssl_context
return create_urllib3_context()

Трассировка стека повторяется внутри ssl.py и botocore/httpsession.py до тех пор, пока не будет превышен предел рекурсии. Полная трассировка стека приведена ниже. вставлен

Попытка исправить: понизить версию boto3
Я попробовал удалить текущую версию и установить более старую:
pip uninstall boto3
pip install boto3==1.9.164


Проблема 2: Ошибка импорта после перехода на более раннюю версию
После перехода на более раннюю версию приложение сразу же завершается с ошибкой при импорте:
ImportError: cannot import name 'Mapping' from 'collections'

Это происходит внутри:
botocore/vendored/requests/packages/urllib3/_collections.py


Что я пробовал
  • Понижение версии boto3
  • Повторное обновление boto3 до последней версии
  • Сохранение urllib3==1.26.18
  • Восстановление образа Docker с нуля
Что бы я ни делал:
  • Новый boto3 → RecursionError
  • Старый boto3 → ImportError: Mapping from коллекции
Вопросы
  • Официально ли boto3 совместим с Python 3.11?
  • Какая комбинация версий boto3, botocore и urllib3 следует использовать с Python 3.11?
  • Известна ли это проблема с рекурсией SSL / urllib3?
  • Как правильно это исправить, не понижая версию Python?
Любые рекомендации или рекомендуемая матрица версий будут очень полезны оценено.

Полная трассировка стека (сокращенно)
RecursionError: maximum recursion depth exceeded
File ".../ssl.py", line 624, in options
File ".../botocore/httpsession.py", line 349, in _get_ssl_context

и после перехода на более раннюю версию:
ImportError: cannot import name 'Mapping' from 'collections'


Подробнее здесь: https://stackoverflow.com/questions/798 ... ror-cannot
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»