Python 3.12 Import Error in Vercel but Works Locally

Expected Behavior

The application should run on Vercel as it does locally on my machine with Python 3.12.8.

Steps to Reproduce

  1. Deploy a FastAPI application to Vercel
  2. Application fails during initialization
  3. Error trace shows an import issue with collections.Sequence

Full Error Stack

odule>
from .applications import FastAPI as FastAPI
File "/var/task/fastapi/applications.py", line 16, in <module>
from fastapi import routing
File "/var/task/fastapi/routing.py", line 24, in <module>
from fastapi import params
File "/var/task/fastapi/params.py", line 5, in <module>
from fastapi.openapi.models import Example
File "/var/task/fastapi/openapi/models.py", line 4, in <module>
from fastapi._compat import (
File "/var/task/fastapi/_compat.py", line 21, in <module>
from fastapi.exceptions import RequestErrorModel
File "/var/task/fastapi/exceptions.py", line 3, in <module>
from pydantic import BaseModel, create_model
File "/var/task/pydantic/__init__.py", line 421, in __getattr__
module = import_module(module_name, package=package)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/lang/lib/python3.12/importlib/__init__.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/task/pydantic/main.py", line 34, in <module>
from ._internal import (
File "/var/task/pydantic/_internal/_model_construction.py", line 25, in <module>
from ._generate_schema import GenerateSchema
File "/var/task/pydantic/_internal/_generate_schema.py", line 10, in <module>
import pathlib
File "/var/task/pathlib.py", line 10, in <module>
from collections import Sequence
ImportError: cannot import name 'Sequence' from 'collections' (/var/lang/lib/python3.12/collections/__init__.py)
Python process exited with exit status: 1. The logs above can help with debugging the issue.
Traceback (most recent call last):
File "/var/task/vc__handler__python.py", line 14, in <module>
__vc_spec.loader.exec_module(__vc_module)
File "<frozen importlib._bootstrap_external>", line 995, in exec_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "/var/task/src/main_vercel.py", line 1, in <module>
from fastapi import FastAPI, Request, WebSocket
File "/var/task/fastapi/__init__.py", line 7, in <module>
from .applications import FastAPI as FastAPI
File "/var/task/fastapi/applications.py", line 16, in <module>
from fastapi import routing
File "/var/task/fastapi/routing.py", line 24, in <module>
from fastapi import params
File "/var/task/fastapi/params.py", line 5, in <module>
from fastapi.openapi.models import Example
File "/var/task/fastapi/openapi/models.py", line 4, in <module>
from fastapi._compat import (
File "/var/task/fastapi/_compat.py", line 21, in <module>
from fastapi.exceptions import RequestErrorModel
File "/var/task/fastapi/exceptions.py", line 3, in <module>
from pydantic import BaseModel, create_model
File "/var/task/pydantic/__init__.py", line 421, in __getattr__
module = import_module(module_name, package=package)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/lang/lib/python3.12/importlib/__init__.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/task/pydantic/main.py", line 34, in <module>
from ._internal import (
File "/var/task/pydantic/_internal/_model_construction.py", line 25, in <module>
from ._generate_schema import GenerateSchema
File "/var/task/pydantic/_internal/_generate_schema.py", line 10, in <module>
import pathlib
File "/var/task/pathlib.py", line 10, in <module>
from collections import Sequence
ImportError: cannot import name 'Sequence' from 'collections' (/var/lang/lib/python3.12/collections/__init__.py)
Python process exited with exit status: 1. The logs above can help with debugging the issue.

Project Information

  • Framework: FastAPI
  • Python Version: 3.12.8
  • Environment: Vercel Serverless Functions
  • Key Dependencies:
    fastapi==0.115.8
    pydantic==2.10.6
    

Questions

  1. How can I recreate Vercel’s Python 3.12 environment locally to debug this issue?
  2. Are there any known compatibility issues with Python 3.12 in Vercel’s environment?
  3. What’s the recommended way to ensure dependency versions match between local and Vercel environments?

Any guidance would be greatly appreciated!

Hey @nikogamulin,

What’s the Node.js version for the project? From the Python runtime docs:

The python_version must exactly match one of the options above or it will be ignored. When upgrading to 3.12 , ensure you set Node.js 20.x or 22.x in your project settings.

I’ve seen Node.js version setting changes solve a range of issues with Python projects. Please give that a try and let me know whether or not it makes a difference.

2 Likes

I set node version to 22.x.

Now I get errors:

Traceback (most recent call last):
File "/var/task/vc__handler__python.py", line 14, in <module>
__vc_spec.loader.exec_module(__vc_module)
File "<frozen importlib._bootstrap_external>", line 995, in exec_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "/var/task/src/main_vercel.py", line 1, in <module>
from fastapi import FastAPI, Request, WebSocket
File "/var/task/fastapi/__init__.py", line 7, in <module>
from .applications import FastAPI as FastAPI
File "/var/task/fastapi/applications.py", line 16, in <module>
from fastapi import routing
File "/var/task/fastapi/routing.py", line 24, in <module>
from fastapi import params
File "/var/task/fastapi/params.py", line 5, in <module>
from fastapi.openapi.models import Example
File "/var/task/fastapi/openapi/models.py", line 4, in <module>
from fastapi._compat import (
File "/var/task/fastapi/_compat.py", line 21, in <module>
from fastapi.exceptions import RequestErrorModel
File "/var/task/fastapi/exceptions.py", line 3, in <module>
from pydantic import BaseModel, create_model
File "<frozen importlib._bootstrap>", line 1412, in _handle_fromlist
File "/var/task/pydantic/__init__.py", line 421, in __getattr__
module = import_module(module_name, package=package)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/lang/lib/python3.12/importlib/__init__.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/var/task/pydantic/main.py", line 34, in <module>
from ._internal import (
File "/var/task/pydantic/_internal/_model_construction.py", line 25, in <module>
from ._generate_schema import GenerateSchema
File "/var/task/pydantic/_internal/_generate_schema.py", line 42, in <module>
from uuid import UUID
File "/var/task/uuid.py", line 138
if not 0 <= time_low < 1<<32L:
^
SyntaxError: invalid decimal literal
Python process exited with exit status: 1. The logs above can help with debugging the issue.