I'm trying to write a function that programmatically obtains and returns the exact location of all first-level modules for all installed packages.
For example, if the packages named 'django' and 'django-debug-toolbar' are installed, I'd like this function to return something like:
That is, this function needs to consider all installed packages, including those that have been installed in "edit" mode (i.e. in the src/ folder). Note also that the main module for the 'django-debug-toolbar' is in fact named 'debug_toolbar'.
So far the closest I've been to retrieving the list of first-level modules is as follows:
pkgs = set()
for dist in pkg_resources.working_set:
for pkg in setuptools.find_packages(dist.location):
if '.' not in pkg:
The idea is then to loop through that list of modules, import them and get their exact locations by fetching their __file__ attribute values.
However, this feels very hackish and I don't think it's actually quite correct either. I'm sure there must be a better way. If possible I'd also like to avoid having to use setuptools.
Does anyone have any tips on how to achieve this?