# PyCyphal v1.10 supports automatic DSDL compilation via import hooks

**URL:** <https://forum.opencyphal.org/t/pycyphal-v1-10-supports-automatic-dsdl-compilation-via-import-hooks/1741>\
**Category:** PyCyphal\
**Created:** [August 21, 2022, 4:46pm UTC](https://forum.opencyphal.org/t/pycyphal-v1-10-supports-automatic-dsdl-compilation-via-import-hooks/1741 "2022-08-21T16:46:31Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![pavel.kirienko](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/pavel.kirienko/32/9_2.png) [@pavel.kirienko](https://forum.opencyphal.org/u/pavel.kirienko)\
**Post date:** [August 21, 2022, 4:46pm UTC](https://forum.opencyphal.org/t/pycyphal-v1-10-supports-automatic-dsdl-compilation-via-import-hooks/1741/1 "2022-08-21T16:46:31Z")

</div>

Rejoice! Where you used to say this:

```python
import pyuavcan
compiled_dsdl_dir = pathlib.Path( __file__ ).resolve().parent / ".demo_dsdl_compiled"
sys.path.insert(0, str(compiled_dsdl_dir))
try:
    import sirius_cyber_corp
    import pyuavcan.application
except (ImportError, AttributeError):
    src_dir = pathlib.Path( __file__ ).resolve().parent
    pyuavcan.dsdl.compile_all(
        [
            src_dir / "custom_data_types/sirius_cyber_corp",
            src_dir / "public_regulated_data_types/uavcan/",
        ],
        output_directory=compiled_dsdl_dir,
    )
    importlib.invalidate_caches()
    import sirius_cyber_corp
    import pyuavcan.application

```

Now you simply say this:

```python
import pyuavcan.application
import sirius_cyber_corp

```

DSDL namespaces are now compiled automatically as necessary. The search paths are set via the environment variable `CYPHAL_PATH`, which works like the standard `PATH`, listing the directories where DSDL namespaces are looked up from. The generated Python packages are stored in `PYCYPHAL_PATH`, the default is `~/.pycyphal`.

Yakut will soon be upgraded to remove the `compile` command completely since it is no longer necessary.

This feature was brought to us by @chemicstry, thanks Jurgis!
