How do you really share constants across your project in a Pythonic way?
Assuming i have a package i created who get input text, and return a huge dictionary with 50+ keys.

Since *all other packages* in the program are using this dictionary and play with those keys,  I don't want to hard code the keys, but keep them as global **constants**.

So here are my options and i feel uncomfortable with both of them:

1. Put all constants vars in a separate folder/package in root folder, and *import them to each package* that use them. To my eyes it makes the code **hairy and uncapsulated.** I love the SW engineering where you have a package that depend on nothing outside.
2. Pass all arguments in this config package to *each* package who need it - which also make things ugly hairy and confusing, and require putting all constants in a class(there are no structures.)

&amp;#x200B;

I know that most people go with **1**, but my code has like 10+ packages i wrote, each package has multiple files, ***each*** depend on these constants(50+), and if i import the constants (even with **absolute import**) to each, it makes me feel uncomfortable.

What if i want to give my package to another developer ? i need to gather all these dependencies?

**How is this done in huge multi developers programs ?**