Is it possible to call a blueprint function from python?

At this time, python does not have access to blueprint functions, but it does have access to your C++ methods.
So, the solution is to declare your blueprint function in C++ as a BlueprintImplementableEvent, and then override it in your blueprint.

I’d recommend checking it works by calling your BlueprintImplementableEvent from C++ before you move on.
Next, make a secondary C++ function to call your BlueprintImplementableEvent.
This function must be implemented as a BlueprintCallable, as these are the ones that are exposed to python.

Finally, once your C++ and blueprints are compiled, all you need to do is call your caller function from python;
your C++ class will be visible as a normal C++ module like so: unreal.YourClassName.yourCallerFunctionName(yourClassInstance, args)
Arguments and return values are handled exactly as you’d expect.
You must pass your function the class instance you wish the function to run from. Very useful when manipulating specific AActor instances.


One final note; if you need your function to be implemented as a blueprint function rather than a blueprint event like I did, you must either make your function constant or give a return value (even if you don’t use it). Otherwise, it will appear in your blueprint overrides as an event.

Screens from my use case, obviously the specifics of my blueprint function implementation is irrelevant:
Blueprint function


.h
Header file declaring my c++ functions (see image)
.cpp
Implementation of my caller utility function (see image)
.py
My python code calling the caller function (see image)