<span style="font-family: courier new,monospace;">Code of our project has split into several packages and we deploy the project using buildout.</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">All worked fine until I need to dynamically inspect python modules.</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Here is structure of our src directory</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">├───project.api.config</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">│   ├───project</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">│   │   └───api</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">│   │       └───config</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">│   │           └───settings</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">│   └───project.api.config.egg-info</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">├───project.api.contacts</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">│   ├───project</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">│   │   └───api</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">│   │       └───contacts</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">│   │           ├───importer</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">│   │           └───views</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">│   └───project.api.contacts.egg-info</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">├───project.api.core</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">│   ├───project</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">│   │   └───api</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">│   │       └───core</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">│   │           ├───js</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">│   │           ├───lib</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">│   │           ├───management</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">│   │           │   └───commands</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">│   │           ├───middleware</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">│   │           ├───sessions</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">│   │           └───users</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">│   └───project.api.core.egg-info</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">         </span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Buildout by itself generates bin/python which look like:</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">import sys</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">sys.path[0:0] = [</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">  'c:\\users\\ad\\project\\src\\project.api.core',</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">  'c:\\users\\ad\\project\\src\\project.api.config',</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">  'c:\\users\\ad\\project\\src\\project.api.contacts',</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">  'c:\\users\\ad\\project\\eggs\\lockfile-0.8-py2.6.egg',</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">  'c:\\users\\ad\\project\\parts\\django',</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">  'c:\\users\\ad\\project\\eggs\\web.py-0.33-py2.6.egg',</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">....</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Regular code like "import project.api.config" worked fine, but now I'm tryed __import__('project.api.config'):</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">$ bin/python</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">>>> import project.api.config</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">>>> __import__('project.api.config')</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;"><module 'project from 'c:\users\ad\project\src\project.api.contacts\project\__init__.pyc'></span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">>>></span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">What's wrong?</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">Ok, I'm trying imp:</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">>>> import imp</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">>>> imp.find_module('project.api.config')</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Traceback (most recent call last):</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">  File "<console>", line 1, in <module></span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">ImportError: No module named project.api.config</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">>>> import sys</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">>>> sys.path[1]</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">'c:\\users\\ad\\project\\src\\project.api.config'</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">>>> imp.find_module('project.api.config', sys.path[1])</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">Traceback (most recent call last):</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">  File "<console>", line 1, in <module></span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">ImportError: No frozen submodule named c:\users\ad\project\src\project.api.config.project.api.config</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">>>></span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">There is setup.py for project.api.config:</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">import os</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">from setuptools import setup, find_packages</span><br style="font-family: courier new,monospace;">
<br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">name = "project.api.config"</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">install_requires = [</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        'zc.buildout', </span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        'setuptools', </span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        'web.py>=0.33',</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        'project.api.core',</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">        'Django>=1.1.0',</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">        'lockfile'</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">]</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">if sys.platform != 'win32':</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    install_requires.append('python-daemon')</span><br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">setup(</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    name = name,</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    version = "1.0",</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    author = "Andrew Degtiariov",</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    author_email = "<a href="mailto:andrew.degtiariov@gmail.com">andrew.degtiariov@gmail.com</a>",</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    description = "...",</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    license = "Commercial",</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    packages=find_packages(os.path.dirname(__file__), exclude=['ez_setup']),</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    namespace_packages=['project, 'project.api'],</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    include_package_data=True,</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">    zip_safe=False,</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">    install_requires = install_requires</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">)</span><br style="font-family: courier new,monospace;">
<br>What's wrong? We really need to split the code for several eggs and want that all of our package's names starts from 'project.api'<br style="font-family: courier new,monospace;"><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">--</span><br style="font-family: courier new,monospace;"><span style="font-family: courier new,monospace;">Andrew Degtiariov</span><br style="font-family: courier new,monospace;">
<span style="font-family: courier new,monospace;">DA-RIPE</span><br style="font-family: courier new,monospace;">