diff --git a/setup.py b/setup.py
index c3d75d9..aebbb3b 100644
--- a/setup.py
+++ b/setup.py
@@ -3,6 +3,7 @@
 # MANUAL CHANGES CAN AND WILL BE OVERWRITTEN!
 
 import re
+from pathlib import Path
 
 from setuptools import setup
 
@@ -88,6 +89,20 @@ def parse_version_file(text: str) -> str:
     return match.group(2)
 
 
+def find_python_packages() -> list[str]:
+    """
+    Find all python packages. (Directories containing __init__.py files.)
+    """
+    root_path = Path(PACKAGE_NAME)
+    packages: set[str] = set([PACKAGE_NAME])
+
+    # Search recursively
+    for init_file in root_path.rglob('__init__.py'):
+        packages.add(str(init_file.parent).replace('/', '.'))
+
+    print(f'Found following packages: {packages}')
+    return sorted(packages)
+
 with open(PACKAGE_NAME + '/_version.py') as f:
     version = parse_version_file(f.read())
 
@@ -107,6 +122,7 @@ setup(
     author='Jon Michael Aanes',
     author_email='jonjmaa@gmail.com',
     url='https://gitfub.space/Jmaa/' + PACKAGE_NAME,
+    packages=find_python_packages(),
     install_requires=REQUIREMENTS_MAIN,
     extras_require={
         'test': REQUIREMENTS_TEST,