FreeRADIUS modules python vs python3

Jonathan Davis jonathan at
Tue Nov 23 23:10:51 CET 2021

I am looking to better understand the python modules under FreeRADIUS. 
My initial assumption was rlm_python was for 2.7.x and rlm_python3 was 
for 3.x. However I am confused about the information at

- rlm_python3 is listed as obsolete with the view documentation link 
taking you to 
where there is neither python or python3
- rlm_python is listed as not obsolete, with "Allows the server to call 
a persistent, embedded Python script."

Installed FreeRADIUS 3.0.25 from the networkRADIUS packages at

In the FreeRADIUS dir, I see there is both python and python3 under 
mods-available, and under mods-config only a python dir

Was rlm_python3 made obsolete as 2.7 was EOL back in Jan of 2020 and 
everything is now simply under rlm_python?

Looking at the latest examples on 
I see both and look to be executed as python3, 
both have #! /usr/bin/env python3 in their headers:

Create the symlink in mods-enabled/python to mods-available/python and 
try with the example provided, which works, then I switch it over to my 
own script, start radiusd -Xx and get the following error:

Tue Nov 23 16:02:41 2021 : Info: Python version: 2.7.18 (default, Oct 11 2021, 11:39:27)  [GCC 8.5.0 20210514 (Red Hat 8.5.0-3)]a
Tue Nov 23 16:02:41 2021 : Error: python_function_load - Module 'dr_yubikey' not found
Tue Nov 23 16:02:41 2021 : Error: <type 'exceptions.ImportError'> (No module named requests)
Tue Nov 23 16:02:41 2021 : Error: [0] /etc/raddb/mods-config/python/ at <module>()
Tue Nov 23 16:02:41 2021 : Error: python_function_load - Failed to import python function 'dr_yubikey.authorize'
Tue Nov 23 16:02:41 2021 : Error: /etc/raddb/mods-enabled/python[9]: Instantiation failed for module "python"

I'm aware the above is failing because requests can't be imported, but 
request is installed under python3, and that first info line is not 
python3, but Python 2.7.18 ?

python2 pip install requests does get me to Tue Nov 23 16:19:55 2021 : 
Info: Ready to process requests when starting debug.

Trying with python3 symlinked in mods-enabled, and creating 
mods-config/python3 and dropping my .py in there:

Tue Nov 23 17:02:11 2021 : Error: /etc/raddb/mods-enabled/python3[9]: Failed to link to module 'rlm_python3': /usr/lib64/freeradius/ cannot open shared object file: No such file or directory

Which is true, there is no that exists under 

Are my assumptions wildly incorrect or am I missing something super obvious?

Thank you,

More information about the Freeradius-Users mailing list