I'm running blueman.tcz in TCL17 x86_64.
blueman.tcz depends on py3.9gobject.tcz. If /usr/local/bin/python3 is a symlink to python3.14 (or any python3 version other than 3.9) then blueman doesn't work because the modules it needs are located in /usr/local/lib/python3.9/site-packages/blueman:
$ blueman-applet &
eileen@blaptop:~$ Traceback (most recent call last):
File "/usr/local/bin/blueman-applet", line 15, in <module>
from blueman.Functions import create_logger, create_parser, set_proc_title
ModuleNotFoundError: No module named 'blueman'
$ tce-status -i | grep python
python3.14
python3.9
python3.9-olefile
python3.9-pillow
$ sudo ln -sf /usr/local/bin/python3.9 /usr/local/bin/python3
$ blueman-applet &
-> now it works
I've encountered this problem of /usr/local/bin/python3 not pointing to the expected python3 version several times before: Sometimes when using extensions, sometimes when building extensions.
I thought about different ways to prevent this kind of problem. One idea is to use a startup script (/usr/local/tce.installed/blueman in this case) that forces /usr/local/bin/python3 to point to the expected python3 version. This approach is risky because it would break applications that need a different python3 version.
Maybe the best solution would be for those python3 applications that depend on a specific python3 version to have a more specific shebang? So in blueman.tcz, for example, the python scripts would have #!/usr/local/bin/python3.9 shebang rather than #!/usr/local/bin/python3? That's the best solution I can think of at the moment.