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:
bench get-appclones a git repo intofrappe-bench/apps/<name>/and then runspip install -e <app_path>.- Bench discovers installed apps by listing the
apps/directory and checking each subdirectory forhooks.py,modules.txt, andpatches.txt(is_frappe_appinbench/utils/__init__.py). get_installed_apps()intersects that directory listing withpip freeze— so an app has to be both registered with pip and present as a directory underapps/to count as installed.- As a result, a pure
pip install <app>(without the directory underapps/) is invisible to bench.
Is there any approach in Frappe (or planned) to make apps discoverable as standard pip-installed packages?