Frappe bench get-app Error Fix (uv pip Issue) — Working Solution for Dependency Failure

If you’re working with the Frappe Framework and trying to install an app using:

bench get-app <repo_url>

…and you hit this error:

Failed to resolve dependencies for `frappe`
Package `gunicorn` was included as a URL dependency

You’re not alone. This is a common issue now, especially with newer versions of Bench.


What Changed in Bench?

Earlier, Bench used:

pip install

Now, it uses:

uv pip install

This change improves speed and dependency resolution in general — but it introduces compatibility issues with older setups like Frappe v14.


Why This Error Happens

Frappe v14 uses Git-based dependencies such as:

gunicorn @ git+https://github.com/frappe/gunicorn@<commit>
  • pip supports this format
  • uv (in strict mode) does not accept indirect Git dependencies

So when you run:

bench get-app <repo_url>

Bench internally runs:

uv pip install -e <app>

…and the installation fails during dependency resolution.


pip vs uv (Quick Comparison)

ToolBehavior
pipFlexible, allows Git-based dependencies
uvStrict, rejects indirect Git dependencies

This is the root cause of the issue.


The Clean Fix (Recommended)

Instead of modifying files or using workarounds, the correct fix is to disable uv and use pip.


Temporary Fix (Single Command)

BENCH_DISABLE_UV=1 bench get-app <repo_url>

Session-Based Fix

export BENCH_DISABLE_UV=1
bench get-app <repo_url>

Permanent Fix (Best for Developers)

Open your shell config:

nano ~/.bashrc

Add this line:

export BENCH_DISABLE_UV=1

Reload:

source ~/.bashrc

Windows Setup

Command Prompt:

set BENCH_DISABLE_UV=1

PowerShell:

$env:BENCH_DISABLE_UV = "1"

What This Fix Does

Before:

bench get-app → uv pip install ❌

After:

bench get-app → pip install ✅

It simply forces Bench to fall back to pip, which supports Frappe’s dependency structure.


Why This Works

  • Frappe v14 depends on Git-based packages
  • pip supports them
  • uv rejects them in strict mode

Switching back to pip resolves the issue without breaking anything.


Avoid These Workarounds

You might come across suggestions like:

  • Editing apps.json
  • Editing apps.txt
  • Installing apps manually using pip

These approaches are not recommended because they:

  • break Bench consistency
  • cause future upgrade issues
  • create hard-to-debug states

Important Insight for Debugging

There are two layers involved in Frappe:

Python Layer

  • pip / uv
  • dependency installation

Bench Layer

  • apps folder
  • apps.json
  • apps.txt

bench get-app connects both.

If dependency installation fails:

  • Python layer fails
  • Bench registration also fails

This is why the issue looks bigger than it actually is.


Pro Tip

If you encounter errors like:

  • frappe dependency resolution failed
  • uv pip install error frappe
  • gunicorn URL dependency error

Try this first:

export BENCH_DISABLE_UV=1

Final Thoughts

This issue is not just a bug — it’s a result of evolving Python tooling.

Modern tools like uv are stricter, while frameworks like Frappe v14 still rely on flexible dependency handling from pip.


TL;DR

export BENCH_DISABLE_UV=1
bench get-app <repo_url>

This simple fix saves hours of debugging and keeps your Frappe setup clean.

Scroll to Top