Deleting Django apps with South dependency
There isn't a great way. This is why I avoid South dependencies at all costs.
Don't use dependencies.
Let's say we have two apps in a project: app1 and app2. Both have South migrations and in this particular case, migration app1.0002_something depends on app2.0001_initial. Everything is nice and fine until you decide that app2 is obsolete and should be deleted (since its utility has been put into app3 and app4 a long time ago).
And here lies the problem: after removing app2 from INSTALLED_APPS ./manage.py migrate returns south.exceptions.DependsOnUnmigratedApplication: Migration 'app1:0002_something' depends on unmigrated application 'app2'.
In this case, I'd probably "reset" the migrations of app1 and go on coding, however, I don't see how I can avoid this situation in the future short of not using dependencies at all. So the questions are:

How can I resolve this situation more gracefully than "resetting" migration history?
How do I prevent this situation from happening and still be able to delete obsolete apps?