Are Frappe apps installable as standard pip packages?

I’ve been exploring whether Frappe apps can be installed and discovered purely through pip (i.e. pip install <app> without bench get-app).

What I found while reading the source code

Tested on Frappe v16.17.3 / bench 5.25.9:

  1. bench get-app clones a git repo into frappe-bench/apps/<name>/ and then runs pip install -e <app_path>.
  2. Bench discovers installed apps by listing the apps/ directory and checking each subdirectory for hooks.py, modules.txt, and patches.txt (is_frappe_app in bench/utils/__init__.py).
  3. get_installed_apps() intersects that directory listing with pip freeze — so an app has to be both registered with pip and present as a directory under apps/ to count as installed.
  4. As a result, a pure pip install <app> (without the directory under apps/) is invisible to bench.

Is there any approach in Frappe (or planned) to make apps discoverable as standard pip-installed packages?

1 Like

Hi,

There is a discussion on Github about installing Frappe apps as pip packages, however there is a lot of dependency that needs to be installed for a production system, such as: Redis, Supervisor, Nginx to name a few. So I would not expect it to be available as a standalone package for the next years.

Can you link the discussion?