Thank you for your suggestion. I solved changing my structure a little bit: python_libs/ |---- src | |---- setup_foo.py | |---- foo | | |---- __init__.py | | |---- foo_module.py | |---- bar | | |---- __init__.py | | |---- bar_module.py | |---- common | | |---- __init__.py | | |---- common_module.py And changed setup_foo.py like this: setup(name='foo', version='0.1', description="foo and common packages", packages=find_packages(exclude=['bar', 'bar.*']), zip_safe=False, ... Now everything works as expected. Maybe as you said an "out of source" build is not well supported.
Split the packages, then, that's by far the best solution. Handle the aggregation at a higher level using one of the existing tool (either python tool, or system packaging tool depending on your preference).
That's of course a good idea, but for now my project is made up of just three packages and I find this solution quite handy. Thanks again! -- Augusto Destrero