[GH-ISSUE #1665] App update fails to upgrade venv dependencies (SQLAlchemy), causing crash on startup #493

Open
opened 2026-10-31 22:13:42 +00:00 by bsakaguchi · 1 comment
Owner

Originally created by @snomiao on GitHub (Mar 18, 2026).
Original GitHub issue: https://github.com/Comfy-Org/desktop/issues/1665

Description

After the ComfyUI Desktop app updates, ComfyUI fails to start with:

ImportError: cannot import name 'mapped_column' from 'sqlalchemy.orm'

and earlier:

Error importing dependencies: cannot import name 'DeclarativeBase' from 'sqlalchemy.orm'

The app's validation check passes (pythonPackages: "OK") via uv pip install --dry-run, but the venv still has SQLAlchemy 1.x while the new ComfyUI version requires SQLAlchemy 2.0+ (DeclarativeBase, mapped_column, Mapped).

Steps to Reproduce

  1. Have ComfyUI Desktop running successfully (v0.17.2, confirmed working)
  2. App updates to v0.8.23
  3. Launch ComfyUI — Python process exits with code 1 immediately

Expected Behavior

The desktop app should upgrade venv dependencies when the bundled ComfyUI version changes, especially for breaking dependency changes.

Actual Behavior

  • Validation reports pythonPackages: "OK" (the --dry-run check doesn't catch the mismatch)
  • Python crashes on import with ImportError: cannot import name 'mapped_column' from 'sqlalchemy.orm'
  • Every subsequent launch attempt fails with the same error

Environment

  • Platform: macOS Darwin 25.3.0 (Apple Silicon)
  • ComfyUI Desktop: v0.8.23
  • Python: 3.12.11
  • ComfyUI: v0.17.2

Workaround

Use "Reset Environment" in the ComfyUI Desktop troubleshooting UI. This recreates the venv and installs the correct dependencies.

Note: Reset Environment does NOT reinstall custom node pip dependencies — see related issue about that.

Log excerpt

[2026-03-18 16:47:57.550] [error] WARNING:root:------------------------------------------------------------------------
Error importing dependencies: cannot import name 'DeclarativeBase' from 'sqlalchemy.orm'
Please install the updated requirements.txt file by running:
/Users/.../ComfyUI/.venv/bin/python -m pip install -r .../ComfyUI/requirements.txt
------------------------------------------------------------------------

[2026-03-18 16:47:58.894] [error] from sqlalchemy.orm import Mapped, foreign, mapped_column, relationship
ImportError: cannot import name 'mapped_column' from 'sqlalchemy.orm'

┆Issue is synchronized with this Notion page by Unito

Originally created by @snomiao on GitHub (Mar 18, 2026). Original GitHub issue: https://github.com/Comfy-Org/desktop/issues/1665 ## Description After the ComfyUI Desktop app updates, ComfyUI fails to start with: ``` ImportError: cannot import name 'mapped_column' from 'sqlalchemy.orm' ``` and earlier: ``` Error importing dependencies: cannot import name 'DeclarativeBase' from 'sqlalchemy.orm' ``` The app's validation check passes (`pythonPackages: "OK"`) via `uv pip install --dry-run`, but the venv still has SQLAlchemy 1.x while the new ComfyUI version requires SQLAlchemy 2.0+ (`DeclarativeBase`, `mapped_column`, `Mapped`). ## Steps to Reproduce 1. Have ComfyUI Desktop running successfully (v0.17.2, confirmed working) 2. App updates to v0.8.23 3. Launch ComfyUI — Python process exits with code 1 immediately ## Expected Behavior The desktop app should upgrade venv dependencies when the bundled ComfyUI version changes, especially for breaking dependency changes. ## Actual Behavior - Validation reports `pythonPackages: "OK"` (the `--dry-run` check doesn't catch the mismatch) - Python crashes on import with `ImportError: cannot import name 'mapped_column' from 'sqlalchemy.orm'` - Every subsequent launch attempt fails with the same error ## Environment - **Platform:** macOS Darwin 25.3.0 (Apple Silicon) - **ComfyUI Desktop:** v0.8.23 - **Python:** 3.12.11 - **ComfyUI:** v0.17.2 ## Workaround Use **"Reset Environment"** in the ComfyUI Desktop troubleshooting UI. This recreates the venv and installs the correct dependencies. **Note:** Reset Environment does NOT reinstall custom node pip dependencies — see related issue about that. ## Log excerpt ``` [2026-03-18 16:47:57.550] [error] WARNING:root:------------------------------------------------------------------------ Error importing dependencies: cannot import name 'DeclarativeBase' from 'sqlalchemy.orm' Please install the updated requirements.txt file by running: /Users/.../ComfyUI/.venv/bin/python -m pip install -r .../ComfyUI/requirements.txt ------------------------------------------------------------------------ [2026-03-18 16:47:58.894] [error] from sqlalchemy.orm import Mapped, foreign, mapped_column, relationship ImportError: cannot import name 'mapped_column' from 'sqlalchemy.orm' ``` ┆Issue is synchronized with this [Notion page](https://www.notion.so/Issue-1665-App-update-fails-to-upgrade-venv-dependencies-SQLAlchemy-causing-crash-on-startup-3276d73d365081e3b231df0795a9b782) by [Unito](https://www.unito.io)
Author
Owner

@dosubot[bot] commented on GitHub (Mar 18, 2026):

This is a confirmed issue with the desktop app's dependency validation logic. The root cause is that the hasRequirements() function uses uv pip install --dry-run to check packages, but there's a critical flaw: outdated packages (like SQLAlchemy 1.x → 2.x) are sometimes incorrectly classified as errors instead of upgrade candidates, which prevents the automatic upgrade flow from triggering.

When hasRequirements() returns 'package-upgrade', the app correctly triggers updatePackages() automatically. However, the detection logic only recognizes certain known upgrade patterns (like aiohttp, av, yarl, and Manager packages). SQLAlchemy isn't in that list, so when uv reports it needs upgrading, the system may treat it as an error and send users to maintenance instead.

This is related to PR #1429 which addressed similar issues, and matches reports in #1346 where validation shows "OK" at startup but runtime dependencies fail.

Workaround confirmation: Reset Environment works because it deletes the entire .venv and recreates it, then reinstalls from the correct requirements - bypassing the flawed upgrade detection entirely.

To reply, just mention @dosu.


Share context across your team and agents. Try Dosu.

Leave Feedback Learn about desktop with Dosu Add Dosu to your team

<!-- gh-comment-id:4080845342 --> @dosubot[bot] commented on GitHub (Mar 18, 2026): <!-- Answer --> This is a confirmed issue with the desktop app's dependency validation logic. The root cause is that the [`hasRequirements()`](https://github.com/Comfy-Org/desktop/blob/559c455a8236536a92653c43d9901ab1fb3e471f/src/virtualEnvironment.ts#L891-L983) function uses `uv pip install --dry-run` to check packages, but there's a critical flaw: **outdated packages (like SQLAlchemy 1.x → 2.x) are sometimes incorrectly classified as errors instead of upgrade candidates**, which prevents the [automatic upgrade flow](https://github.com/Comfy-Org/desktop/blob/559c455a8236536a92653c43d9901ab1fb3e471f/src/install/installationManager.ts#L94-L95) from triggering. When `hasRequirements()` returns `'package-upgrade'`, the app [correctly triggers `updatePackages()`](https://github.com/Comfy-Org/desktop/blob/559c455a8236536a92653c43d9901ab1fb3e471f/src/install/installationManager.ts#L94-L95) automatically. However, the [detection logic](https://github.com/Comfy-Org/desktop/blob/559c455a8236536a92653c43d9901ab1fb3e471f/src/virtualEnvironment.ts#L917-L948) only recognizes certain known upgrade patterns (like `aiohttp`, `av`, `yarl`, and Manager packages). SQLAlchemy isn't in that list, so when uv reports it needs upgrading, the system may treat it as an error and send users to maintenance instead. This is related to [PR #1429](https://github.com/Comfy-Org/desktop/pull/1429) which addressed similar issues, and matches reports in [#1346](https://github.com/Comfy-Org/desktop/issues/1346) where validation shows "OK" at startup but runtime dependencies fail. **Workaround confirmation**: Reset Environment works because it [deletes the entire `.venv`](https://github.com/Comfy-Org/desktop/blob/559c455a8236536a92653c43d9901ab1fb3e471f/src/virtualEnvironment.ts#L1068-L1079) and recreates it, then reinstalls from the correct requirements - bypassing the flawed upgrade detection entirely. <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=reply-with-mention&utm_term=Comfy-Org%2Fdesktop).* --- Share context across your team and agents. Try [Dosu](https://dosu.dev?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=knowledge-infrastructure-tagline&utm_term=Comfy-Org%2Fdesktop). [![Leave Feedback](https://img.shields.io/badge/Leave%20Feedback-555555?style=flat)](https://app.dosu.dev/response-feedback?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=knowledge-infrastructure-feedback&utm_term=Comfy-Org%2Fdesktop#message_id=6e66a016-a682-4622-8c3d-9dfea9b78dd0) [![Learn about desktop with Dosu](https://img.shields.io/badge/Learn%20about%20desktop%20with%20Dosu-2f7b3f?style=flat&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iODYiIGhlaWdodD0iODkiIHZpZXdCb3g9IjAgMCA4NiA4OSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTIzNiAxMi43OTI4TDE3Ljc1OTMgNi42ODE4OFY3Mi41NjY3TDUuMjkyMzYgODQuMDYxOFYxMi43OTI4WiIgZmlsbD0iI0I0QkI5MSIvPjxwYXRoIGQ9Ik0xOC4yNTc1IDczLjExOTZMNTkuMTMyOSA3Mi43NDhMNTEuNzAxMSA4Mi40MDk1TDI5LjAzMzggODYuMjkxTDYuMjM5NjIgODUuMTU1NEwxOC4yNTc1IDczLjExOTZaIiBmaWxsPSIjNzc4NTYxIi8%2BPHBhdGggZD0iTTE3LjQ5MTYgMy43MzYzM0wzLjU4NTU3IDEyLjcwOTlWODMuNTc5MkMzLjU4NTU3IDg0Ljc1NDIgNC45ODU2MyA4NS4zNjUyIDUuODQ3MDUgODQuNTY2TDE5LjYyOTYgNzEuNzgwMSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSI2LjQyODQ0IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48bWFzayBpZD0iZG9zdS1kLWN1dG91dCIgZmlsbD0id2hpdGUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDAuNzA0IDAuNTE4MDY2SDE3LjA0MzlWNzYuMjIyMUg0MC43MDRINDIuNTgwNUg0Ny44MDEzQzY4LjcwNjQgNzYuMjIyMSA4NS42NTMzIDU5LjI3NTIgODUuNjUzMyAzOC4zNzAxQzg1LjY1MzMgMTcuNDY1IDY4LjcwNjMgMC41MTgwNjYgNDcuODAxMyAwLjUxODA2Nkg0Mi41ODA1SDQwLjcwNFoiLz48L21hc2s%2BPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MC43MDQgMC41MTgwNjZIMTcuMDQzOVY3Ni4yMjIxSDQwLjcwNEg0Mi41ODA1SDQ3LjgwMTNDNjguNzA2NCA3Ni4yMjIxIDg1LjY1MzMgNTkuMjc1MiA4NS42NTMzIDM4LjM3MDFDODUuNjUzMyAxNy40NjUgNjguNzA2MyAwLjUxODA2NiA0Ny44MDEzIDAuNTE4MDY2SDQyLjU4MDVINDAuNzA0WiIgZmlsbD0iI0YzRjZGMSIvPjxwYXRoIGQ9Ik0xNy4wNDM5IDAuNTE4MDY2Vi02LjU3OTE5SDkuOTQ2NjlWMC41MTgwNjZIMTcuMDQzOVpNMTcuMDQzOSA3Ni4yMjIxSDkuOTQ2NjlWODMuMzE5NEgxNy4wNDM5Vjc2LjIyMjFaTTE3LjA0MzkgNy42MTUzMkg0MC43MDRWLTYuNTc5MTlIMTcuMDQzOVY3LjYxNTMyWk0yNC4xNDEyIDc2LjIyMjFWMC41MTgwNjZIOS45NDY2OVY3Ni4yMjIxSDI0LjE0MTJaTTQwLjcwNCA2OS4xMjQ5SDE3LjA0MzlWODMuMzE5NEg0MC43MDRWNjkuMTI0OVpNNDIuNTgwNSA2OS4xMjQ5SDQwLjcwNFY4My4zMTk0SDQyLjU4MDVWNjkuMTI0OVpNNDcuODAxMyA2OS4xMjQ5SDQyLjU4MDVWODMuMzE5NEg0Ny44MDEzVjY5LjEyNDlaTTc4LjU1NiAzOC4zNzAxQzc4LjU1NiA1NS4zNTU1IDY0Ljc4NjcgNjkuMTI0OSA0Ny44MDEzIDY5LjEyNDlWODMuMzE5NEM3Mi42MjYxIDgzLjMxOTQgOTIuNzUwNSA2My4xOTQ5IDkyLjc1MDUgMzguMzcwMUg3OC41NTZaTTQ3LjgwMTMgNy42MTUzMkM2NC43ODY2IDcuNjE1MzIgNzguNTU2IDIxLjM4NDcgNzguNTU2IDM4LjM3MDFIOTIuNzUwNUM5Mi43NTA1IDEzLjU0NTMgNzIuNjI2IC02LjU3OTE5IDQ3LjgwMTMgLTYuNTc5MTlWNy42MTUzMlpNNDIuNTgwNSA3LjYxNTMySDQ3LjgwMTNWLTYuNTc5MTlINDIuNTgwNVY3LjYxNTMyWk00MC43MDQgNy42MTUzMkg0Mi41ODA1Vi02LjU3OTE5SDQwLjcwNFY3LjYxNTMyWiIgZmlsbD0iYmxhY2siIG1hc2s9InVybCgjZG9zdS1kLWN1dG91dCkiLz48cGF0aCBkPSJNNjguOTIxNSAzNi4wMTM1QzY4LjkyMTUgMzYuMDEzNSA2NS43MzY5IDQ5LjQ3MzggNTEuNDIzMSA0OS40NzM4QzM3LjEwOTMgNDkuNDczOCAzMi41Nzg3IDM3LjM1OTYgMzIuNTc4NyAzNi4wMTM1IiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjcuNjkxNjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0wLjM0ODYzMyA4NS40OTQ2QzAuMzQ4NjMzIDg1LjQ5NDYgMjkuNDg1NiA4NS44MzA5IDM0LjgwOSA4NS42OThDNDQuODMzNyA4NS40NDc3IDUxLjI4NzIgODQuNDAyIDU3LjUyNjkgNzguOTcyNEM2Mi44MTI5IDc0LjM3MjcgNzUuMTM0MiA1OS42ODM2IDc1LjEzNDIgNTkuNjgzNiIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSI2LjE2NDgyIi8%2BPC9zdmc%2B)](https://github.dosu.com/Comfy-Org/desktop?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=knowledge-infrastructure-learn-repo&utm_term=Comfy-Org%2Fdesktop) [![Add Dosu to your team](https://img.shields.io/badge/Add%20Dosu%20to%20your%20team-1f6feb?style=flat)](https://app.dosu.dev/signup?referrer=openSource&source=github-footer&utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=knowledge-infrastructure-add-team&utm_term=Comfy-Org%2Fdesktop)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Comfy-Org/desktop#493
No description provided.