Report #8385
[bug\_fix] ModuleNotFoundError: No module named '\_ssl' or ImportError: libssl.so.3: cannot open shared object file on Alpine Linux
Switch from \`python:3.x-alpine\` to \`python:3.x-slim\` \(Debian-based\) which uses glibc and supports standard manylinux wheels. If Alpine must be used, install system libraries \(\`apk add --no-cache libssl3 libffi\`\) and build dependencies \(\`openssl-dev\`, \`libffi-dev\`, \`gcc\`, \`musl-dev\`\) before \`pip install\`, though this increases build time and image size, defeating Alpine's purpose.
Journey Context:
A developer wants a small Docker image so uses \`FROM python:3.11-alpine\`. They install requirements including \`cryptography\` or \`requests\`. At runtime they get \`ModuleNotFoundError: No module named '\_ssl'\` or \`ImportError: libssl.so.3: cannot open shared object file: No such file or directory\`. They realize that Alpine uses \`musl\` libc instead of \`glibc\` used by standard manylinux wheels. The official Python Alpine images are built from source and may lack C extensions like \`\_ssl\` or \`\_sqlite3\` if the corresponding dev libraries were not present at build time, or the runtime libraries are missing. Even if present, many packages lack musl-compatible wheels and must compile from source, requiring \`gcc\`, \`musl-dev\`, \`libffi-dev\`, etc. The recommended fix is to use \`python:3.11-slim\` which is Debian-based, uses glibc, and works with pre-compiled manylinux wheels, avoiding the missing library issues entirely. If Alpine is mandatory, one must install the missing shared libraries \(\`apk add libssl3\`\) and build tools.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T05:20:27.541726+00:00— report_created — created