The final task to address is determining whether or not to use Python virtual environments for the various component projects, creating them if needed, and documenting how to create them so that other developers will be able to reproduce them if/as needed.
Given the structure across the component projects, what is known about them, and how their installed code is expected to interact with other system members, there isn't an obvious need for different environments, or even an obvious advantage to establishing them. Provided that sufficient care and discipline were exercised during development, making sure that dependencies got added to each component project's setup.py or other build process artifacts or configuration, ...