In verbose logging, the log is supposed to contain a list of the pywikibot modules loaded at startup, however on py3 it logs not modules.
The problem is the eval does not set local variable __version__
In addition, the algorithm is dodgy.
It checks every module name to see if it is a part of pywikibot, which is problematic if pywikibot has a module which has the same name as another package, and this approach also unnecessarily tries to stat many files which will not exist.
If it does find a pywikibot file, it reads the file to find __version__ even though Python has already loaded the module. it then exec's the first line which contains __version__, assuming it is an assignment to __version__.
module versions could be merged into version.package_versions(), as it already supports different types of entries (builtins, standard library)
Version: core-(2.0)
Severity: minor