I love decoupling. This makes the project maintaining easier. We have 2 main ways to do it: Git submodules. This is a good conception but sometimes very confusable. Also, you must commit updates in parent project for each submodule changing. Packaging. I think this solution is better because you already use many packages in your project. You can easily package your project and explain this concept to any junior. This article about creating python package without pain.