cloudflare / cloudflare/workerd

🐛 BUG:Python dependency packages cannot be correctly imported on worker

Open
#2,279 4 comments 1 reaction 0 assignees View on GitHub
bug python
Dominant language
C++
Stars
8.7k
Forks
739
Avg merge
2d 20h
Merged PRs (30d)
174

Description

### Which Cloudflare product(s) does this pertain to?

Workers Runtime

### What version(s) of the tool(s) are you using?

wrangler@3.60.3

### What version of Node are you using?

Python 3.10.12

### What operating system and version are you using?

Ubuntu 22.04

### Describe the Bug

### Observed behavior
Python dependency packages cannot be correctly imported on worker, I want to imported requests package, but the requests depend on the urlib3, when i importing the failed happened. I had download the dependency package to the local.

Uncaught Error: PythonError: Traceback (most recent call last):
File "/lib/python312.zip/_pyodide/_base.py", line 629, in pyimport_impl
res = __import__(stem, fromlist=fromlist)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/session/metadata/entry.py", line 4, in
import requests
File "/session/metadata/requests/__init__.py", line 43, in
import urllib3
File "/session/metadata/urllib3/__init__.py", line 209, in
from .contrib.emscripten import inject_into_urllib3 # noqa: 401
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/session/metadata/urllib3/contrib/emscripten/__init__.py", line 6, in
from .connection import EmscriptenHTTPConnection, EmscriptenHTTPSConnection
File "/session/metadata/urllib3/contrib/emscripten/connection.py", line 17, in
from .fetch import _RequestError, _TimeoutError, send_request, send_streaming_request
File "/session/metadata/urllib3/contrib/emscripten/fetch.py", line 62, in
.read_text(encoding="utf-8")
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/lib/python312.zip/pathlib.py", line 1027, in read_text
with self.open(mode='r', encoding=encoding, errors=errors) as f:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/lib/python312.zip/pathlib.py", line 1013, in open
return io.open(self, mode, buffering, encoding, errors, newline)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 44] No such file or directory:
'/session/metadata/urllib3/contrib/emscripten/emscripten_fetch_worker.js'

at null. (pyodide-internal:generated/pyodide.asm:20:9998) in new_error
at [object Object] in $wrap_exception
at [object Object] in $pythonexc2js
at null. (pyodide-internal:generated/pyodide.asm:20:607956) in Module._pythonexc2js
at null. (pyodide-internal:generated/pyodide.asm:20:64098) in
Module.callPyObjectKwargs
at null. (pyodide-internal:generated/pyodide.asm:20:65055) in Module.callPyObject
at null. (pyodide-internal:generated/pyodide.asm:20:79132) in apply
at null. (pyodide-internal:generated/pyodide.asm:20:77371) in apply
at null. (pyodide-internal:generated/pyodide.asm:20:102862) in pyimport
at null. (pyodide:python-entrypoint-helper:31:18) in pyimportMainModule
[code: 10021]

### Expected behavior
npx wrangler deploy

### Steps to reproduce
The simple worker file

from js import Response

import requests
async def on_fetch(request, env):
return Response.new("Hello world!")

### Please provide a link to a minimal reproduction

_No response_

### Please provide any relevant error logs

Uncaught Error: PythonError: Traceback (most recent call last):
File "/lib/python312.zip/_pyodide/_base.py", line 629, in pyimport_impl
res = __import__(stem, fromlist=fromlist)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/session/metadata/entry.py", line 4, in
import requests
File "/session/metadata/requests/__init__.py", line 43, in
import urllib3
File "/session/metadata/urllib3/__init__.py", line 209, in
from .contrib.emscripten import inject_into_urllib3 # noqa: 401
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/session/metadata/urllib3/contrib/emscripten/__init__.py", line 6, in
from .connection import EmscriptenHTTPConnection, EmscriptenHTTPSConnection
File "/session/metadata/urllib3/contrib/emscripten/connection.py", line 17, in
from .fetch import _RequestError, _TimeoutError, send_request, send_streaming_request
File "/session/metadata/urllib3/contrib/emscripten/fetch.py", line 62, in
.read_text(encoding="utf-8")
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/lib/python312.zip/pathlib.py", line 1027, in read_text
with self.open(mode='r', encoding=encoding, errors=errors) as f:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/lib/python312.zip/pathlib.py", line 1013, in open
return io.open(self, mode, buffering, encoding, errors, newline)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 44] No such file or directory:
'/session/metadata/urllib3/contrib/emscripten/emscripten_fetch_worker.js'

at null. (pyodide-internal:generated/pyodide.asm:20:9998) in new_error
at [object Object] in $wrap_exception
at [object Object] in $pythonexc2js
at null. (pyodide-internal:generated/pyodide.asm:20:607956) in Module._pythonexc2js
at null. (pyodide-internal:generated/pyodide.asm:20:64098) in
Module.callPyObjectKwargs
at null. (pyodide-internal:generated/pyodide.asm:20:65055) in Module.callPyObject
at null. (pyodide-internal:generated/pyodide.asm:20:79132) in apply
at null. (pyodide-internal:generated/pyodide.asm:20:77371) in apply
at null. (pyodide-internal:generated/pyodide.asm:20:102862) in pyimport
at null. (pyodide:python-entrypoint-helper:31:18) in pyimportMainModule
[code: 10021]

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.