Mohammed Hammoud

Mohammed Hammoud

Senior full-stack-utvecklare som bygger skalbara webb- och mobilprodukter med starkt fokus på användarupplevelse. TypeScript, React, SolidJS, Python, Django. Baserad i Stockholm.

Fixa locale.Error: unsupported locale setting i Docker och CI

Det här felet är nästan aldrig ett Python-problem. Det är en mismatch mellan vad dina miljövariabler säger och vad OS:et faktiskt har installerat.

Vad som händer

Någonstans i Python-koden anropas setlocale(..., ''), vilket betyder “använd den locale som LANG/LC_* anger”. I minimala miljöer (slim-containers, vissa CI-images, nykonfigurerade servrar) finns de localerna oftast inte installerade.

Resultatet: LANG=en_US.UTF-8 är satt, men det finns ingen en_US.UTF-8-definition på disken.

Två lösningar

1) Använd C.UTF-8

Om du inte behöver locale-specifik sortering eller formattering och bara vill ha korrekt UTF-8-hantering, är C.UTF-8 det enklaste alternativet. Det fungerar stabilt i containers och CI.

ENV LANG=C.UTF-8 \
    LC_ALL=C.UTF-8

2) Installera den locale du behöver

Om du verkligen behöver locale-medveten formatering, installera localen i din OS-image och sätt LANG/LC_ALL så det stämmer överens. Det viktiga är konsistens: miljövariablerna måste matcha det som faktiskt är installerat.

Var du applicerar lösningen

  • I containers: använd C.UTF-8 om du inte har ett specifikt skäl att inte göra det.
  • På VM:er: installera locales en gång vid uppstart.
  • I CI: förlita dig inte på standardvärden, sätt LANG/LC_ALL explicit.

När du börjar konfigurera locale explicit istället för att anta att den finns, slutar det här felet dyka upp.