Can we execute custom Python functions from driver expressions? I have a simple function that I'd like to call from a driver Python expression.



I've run the script to define the function, but it doesn't seem to be accessible from the driver expression.

Error in Driver: The following Python expression failed:
    'myDriverFunction()'

Traceback (most recent call last):
  File "&lt;bpy driver&gt;", line 1, in &lt;module&gt;
NameError: name 'myDriverFunction' is not defined


Is it possible to modify the namespace in which drivers execute?
Your custom driver must add itself to the list of drivers BPY is aware of.
See the example here:
https://docs.blender.org/manual/en/dev/animation/drivers/workflow_examples.html#driver-namespace

import bpy

def driverFunc(val):

    return val * val    # return val squared

bpy.app.driver_namespace['driverFunc'] = driverFunc    # add function to driver_namespace