Python 3.14 runtime image omits _zstd, so compression.zstd cannot import
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 55/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- docker, python
- Domain
- build-system, devops
Research direction
Start by running the two provided Docker commands against mcr.microsoft.com/azure-functions/python:4-python3.14 and confirm the import failure and MODULE__ZSTD_STATE value. Then trace the image's Python build and dependency configuration to find where the Zstandard development dependency is selected. Done means the rebuilt official image imports compression.zstd successfully and reports the _zstd module as present.
Written by the indexing model from the issue text.
Description
Expected Behavior
The official Python 3.14 Azure Functions runtime should include CPython's _zstd extension so that the Python 3.14 standard-library import from compression import zstd succeeds. Python 3.14 is GA for Azure Functions, and CPython documents Zstandard 1.4.5 or later as the build dependency for this optional standard-library module.
Actual Behavior
In the official mcr.microsoft.com/azure-functions/python:4-python3.14 image, importing compression.zstd raises ModuleNotFoundError: No module named '_zstd'. CPython's recorded build state reports MODULE__ZSTD_STATE=missing. The final image contains libzstd.so.1, but the extension was not compiled when CPython was built, so adding the runtime library or installing the third-party zstandard package cannot restore the missing standard-library extension.
Steps to Reproduce
-
Pull the current official image:
docker pull --platform linux/amd64 mcr.microsoft.com/azure-functions/python:4-python3.14 -
Run the standard-library import:
docker run --platform linux/amd64 --rm mcr.microsoft.com/azure-functions/python:4-python3.14 python -c "from compression import zstd" -
Inspect CPython's recorded module build state:
docker run --platform linux/amd64 --rm mcr.microsoft.com/azure-functions/python:4-python3.14 python -c "import sysconfig; print(sysconfig.get_config_var('MODULE__ZSTD_STATE'))" -
Observe the import failure and the
missingbuild state.
Relevant code being tried
docker run --platform linux/amd64 --rm mcr.microsoft.com/azure-functions/python:4-python3.14 python -c "from compression import zstd"
docker run --platform linux/amd64 --rm mcr.microsoft.com/azure-functions/python:4-python3.14 python -c "import sysconfig; print(sysconfig.get_config_var('MODULE__ZSTD_STATE'))"
Relevant log output
Python 3.14.4
Traceback (most recent call last):
File "<string>", line 1, in <module>
from compression import zstd
File "/opt/python/3/lib/python3.14/compression/zstd/__init__.py", line 29, in <module>
import _zstd
ModuleNotFoundError: No module named '_zstd'
MODULE__ZSTD_STATE: missing
Installed runtime library:
libzstd1:amd64 1.5.5+dfsg2-2build1.1
libzstd.so.1
requirements.txt file
No third-party requirements are needed. The failure reproduces directly in the unmodified Azure Functions base image.
Where are you facing this problem?
Production Environment (explain below)
Function app name
No response
Additional Information
Image tested: mcr.microsoft.com/azure-functions/python:4-python3.14
Image digest at the time of testing:
sha256:2504f2b6dff243d671183e9dd6d607d1ae8f35e3536aa14965ffc3516749c1b8
CPython build requirements document Zstandard >= 1.4.5 for compression.zstd:
https://docs.python.org/3.14/using/configure.html#requirements-for-optional-modules
Impact: libraries may select the Python 3.14 standard-library Zstandard implementation based on the interpreter version. For example, starlette-compress uses compression.zstd on Python >= 3.14, so its default Zstandard support fails under this image even though it works with Python distributions that include _zstd. Installing the third-party zstandard package does not fix that import path.
Current application workaround: probe importlib.util.find_spec("_zstd") and disable Zstandard, falling back to Brotli or Gzip. The durable fix is to make the Zstandard development dependency available when CPython is compiled for the official Python 3.14 Functions runtime.
- Dominant language
- Python
- Stars
- 357
- Forks
- 117
- Avg merge
- 13d 12h
- Merged PRs (30d)
- 2
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Azure/azure-functions-python-worker
-
[Bug] ASGI cookie conversion serializes an absent Domain attribute and breaks __Host- cookiesPossibly taken @tharun06 claimed this 14 days ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 5/5 Over a week Newbie friendliness 28/100
Azure/azure-functions-python-worker#1908 · 2 comments ·
-
Difficulty 4/5 3-5 days Newbie friendliness 55/100
Azure/azure-functions-python-worker#1906 · 1 comment ·
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
-
Difficulty 4/5 3-5 days Newbie friendliness 55/100
All issues in Azure/azure-functions-python-worker
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
LearningCircuit/local-deep-research#7206 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
chingu-voyages/V62-tier3-team-33#285 ·
Maintainers usually reply within 1 day
-
Proxy drops log notifications from backends that don't send FastMCP's msg/extra dictPossibly taken @asasemahmed claimed this today. Openbug server
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
[Bug]: Bedrock request metadata forwarding does not work for /embeddingsPossibly taken A pull request linked to this issue is open or already merged. Openbug llm translation
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day