16.7 Coping with changes in dependencies
As we noted in the Installing packages with a requirements.txt file, all packages on which an application is built are in a constant state of flux. Each project has a distinct tempo for updates. To manage the constant change, it’s important for people developing applications to track dependencies carefully.
A common complaint about Python is sometimes summarized as dependency hell. This summarizes the work required to track and test with new dependencies, some of which may be in conflict. This work to manage change is essential; it’s the minimum required to maintain a viable product. Instead of adding features, it preserves functionality in a world of constant change.
There are two common cases where upgrades turn into more than simply installing and testing with upgraded packages:
Changes that break our application in some way
Incompatibilities among packages our application depends...