"It's completely global"
It doesn't have to be. You can have a launcher for a project that sets PYTHONPATH just when you launch that project.
What is bad practice is to be setting PYTHONPATH in your .bashrc, and for the reason you give - that makes it global across python launches.