#1128693 psychtoolbox-3: please provide python3-psychtoolbox for psychopy upgrade

#1128693#5
Date:
2026-02-22 14:42:42 UTC
From:
To:
Dear Maintainer,

I am investigating the feasibility to bring back psychopy into
shape, preferrably in its latest upstream release (2026.1.0 up
to day).  I see that some of the tests are going to require the
psychtoolbox Python module, excerp from the test failure:

	Traceback:
	/usr/lib/python3.13/importlib/__init__.py:88: in import_module
	    return _bootstrap._gcd_import(name[level:], package, level)
	           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	psychopy/tests/test_validators/test_voicekeyValidator.py:3: in <module>
	    from psychopy.hardware import microphone, soundsensor, DeviceManager
	psychopy/hardware/microphone.py:5: in <module>
	    from psychtoolbox import audio as audio
	E   ModuleNotFoundError: No module named 'psychtoolbox'

The Python module psychtoolbox looks to be shipped, but not
distributed as binary package python3-psychtoolbox, by
psychtoolbox-3.  Please, would it be possible to have the Python
module added to the ecosystem of psychtoolbox utilities?

Have a nice day,  :)
Étienne.

#1128693#10
Date:
2026-02-25 20:40:32 UTC
From:
To:
Hi Yaroslav, Hi Michael,

Étienne Mollier, on 2026-02-22:
[…]

I spent some time to also assess the feasibility of a
python3-psychtoolbox binary package out of the existing
psychtoolbox-3 source package.  I think that I obtained
something that works with the debdiff you will find in
attachment.

Have a nice day,  :)

#1128693#17
Date:
2026-02-28 14:19:04 UTC
From:
To:
Thank you Étienne,

I had built 1 patch newer (forgot to build it) and even went ahead and
uploaded it but not yet sure if that python package is usable since one
import does fail on recent debians (building backports seems to not do
that type of "unittest discover" thus not tripping it):

neurodebian@smaug ..uilds/psychtoolbox-3/3.0.19.15.dfsg1-1 % dpkg -c python3-psychtoolbox_3.0.19.15.dfsg1-1~nd130+1_amd64.deb
drwxr-xr-x root/root         0 2026-02-27 23:04 ./
drwxr-xr-x root/root         0 2026-02-27 23:04 ./usr/
drwxr-xr-x root/root         0 2026-02-27 23:04 ./usr/lib/
drwxr-xr-x root/root         0 2026-02-27 23:04 ./usr/lib/python3/
drwxr-xr-x root/root         0 2026-02-27 23:04 ./usr/lib/python3/dist-packages/
drwxr-xr-x root/root         0 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/
-rw-r--r-- root/root    128360 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/GetSecs.cpython-313-x86_64-linux-gnu.so
-rw-r--r-- root/root    176776 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/IOPort.cpython-313-x86_64-linux-gnu.so
-rw-r--r-- root/root    264552 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/PsychHID.cpython-313-x86_64-linux-gnu.so
-rw-r--r-- root/root    290376 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/PsychPortAudio.cpython-313-x86_64-linux-gnu.so
-rw-r--r-- root/root    128008 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/WaitSecs.cpython-313-x86_64-linux-gnu.so
-rw-r--r-- root/root      1003 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/__init__.py
-rw-r--r-- root/root      1046 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/_abi3_wheel.py
-rw-r--r-- root/root        26 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/_version.py
-rw-r--r-- root/root      9815 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/audio.py
drwxr-xr-x root/root         0 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/demos/
-rw-r--r-- root/root         0 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/demos/__init__.py
-rw-r--r-- root/root      1747 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/demos/hidtest_oldschool.py
-rw-r--r-- root/root      1355 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/demos/hidtest_pythonic.py
-rw-r--r-- root/root      5711 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/demos/ppatest_oldschool.py
-rw-r--r-- root/root      6684 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/demos/ppatest_pythonic.py
-rw-r--r-- root/root      6693 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox/hid.py
drwxr-xr-x root/root         0 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox-3.0.19.15.dist-info/
-rw-r--r-- root/root         7 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox-3.0.19.15.dist-info/INSTALLER
-rw-r--r-- root/root       474 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox-3.0.19.15.dist-info/METADATA
-rw-r--r-- root/root       104 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox-3.0.19.15.dist-info/WHEEL
-rw-r--r-- root/root        61 2026-02-27 23:04 ./usr/lib/python3/dist-packages/psychtoolbox-3.0.19.15.dist-info/top_level.txt
drwxr-xr-x root/root         0 2026-02-27 23:04 ./usr/share/
drwxr-xr-x root/root         0 2026-02-27 23:04 ./usr/share/doc/
drwxr-xr-x root/root         0 2026-02-27 23:04 ./usr/share/doc/python3-psychtoolbox/
-rw-r--r-- root/root      2799 2026-02-27 23:04 ./usr/share/doc/python3-psychtoolbox/changelog.Debian.gz
-rw-r--r-- root/root     31791 2026-02-27 21:07 ./usr/share/doc/python3-psychtoolbox/changelog.gz
-rw-r--r-- root/root     11076 2026-02-27 21:07 ./usr/share/doc/python3-psychtoolbox/copyright
neurodebian@smaug ..uilds/psychtoolbox-3/3.0.19.15.dfsg1-1 % cat summary.build
psychtoolbox-3_3.0.19.15.dfsg1-1_amd64.build	OK	13:36.69 real, 452.31 user, 186.77 sys, 6695440 out
psychtoolbox-3_3.0.19.15.dfsg1-1~nd110+1_i386.build	OK	11:22.57 real, 437.63 user, 159.63 sys, 4192648 out
psychtoolbox-3_3.0.19.15.dfsg1-1~nd110+1_amd64.build	OK	11:23.85 real, 436.89 user, 169.05 sys, 4657408 out
psychtoolbox-3_3.0.19.15.dfsg1-1~nd120+1_i386.build	OK	10:57.58 real, 415.33 user, 130.22 sys, 4958680 out
psychtoolbox-3_3.0.19.15.dfsg1-1~nd120+1_amd64.build	OK	11:11.29 real, 422.37 user, 152.27 sys, 5425408 out
psychtoolbox-3_3.0.19.15.dfsg1-1~nd130+1_i386.build	OK	12:18.13 real, 421.33 user, 149.11 sys, 5372800 out
psychtoolbox-3_3.0.19.15.dfsg1-1~nd130+1_amd64.build	OK	11:40.02 real, 428.05 user, 175.41 sys, 5668944 out
psychtoolbox-3_3.0.19.15.dfsg1-1~nd140+1_i386.build	FAILED	7:36.09 real, 100.91 user, 52.02 sys, 661632 out
psychtoolbox-3_3.0.19.15.dfsg1-1~nd140+1_amd64.build	FAILED	2:22.30 real, 89.38 user, 42.08 sys, 655656 out
psychtoolbox-3_3.0.19.15.dfsg1-1~nd+1_i386.build	FAILED	6:31.01 real, 90.34 user, 41.46 sys, 621904 out
psychtoolbox-3_3.0.19.15.dfsg1-1~nd+1_amd64.build	FAILED	6:56.20 real, 217.87 user, 93.66 sys, 4269384 out
psychtoolbox-3_3.0.19.15.dfsg1-1~nd20.04+1_i386.build	FAILED	0:00.01 real, 0.00 user, 0.00 sys, 8 out
psychtoolbox-3_3.0.19.15.dfsg1-1~nd20.04+1_amd64.build	FAILED	0:58.53 real, 42.48 user, 20.46 sys, 390448 out
psychtoolbox-3_3.0.19.15.dfsg1-1~nd22.04+1_i386.build	FAILED	0:00.00 real, 0.00 user, 0.00 sys, 0 out
psychtoolbox-3_3.0.19.15.dfsg1-1~nd22.04+1_amd64.build	OK	8:29.44 real, 299.62 user, 97.74 sys, 4851096 out
psychtoolbox-3_3.0.19.15.dfsg1-1~nd24.04+1_i386.build	FAILED	0:00.01 real, 0.00 user, 0.00 sys, 0 out
psychtoolbox-3_3.0.19.15.dfsg1-1~nd24.04+1_amd64.build	OK	9:07.94 real, 330.88 user, 111.43 sys, 5376112 out
neurodebian@smaug ..uilds/psychtoolbox-3/3.0.19.15.dfsg1-1 % grep -B10 dh_auto_test.* psychtoolbox-3_3.0.19.15.dfsg1-1~nd+1_amd64.build
adding 'psychtoolbox-3.0.19.15.dist-info/RECORD'
removing build/bdist.linux-x86_64/wheel
Successfully built psychtoolbox-3.0.19.15-cp313-cp313-linux_x86_64.whl
I: pybuild plugin_pyproject:168: Unpacking wheel built for python3.13 with "installer" module
install --mode=0644 PsychSourceGL/Cohorts/FTGLTextRenderer/libptbdrawtext_ftgl.so.1 \
   Psychtoolbox/PsychBasic/PsychPlugins
install -T --mode=0644 managementtools/WelcomeSplash-dfsg.ppm ./Psychtoolbox/PsychBasic/WelcomeSplash.ppm
touch build-stamp
dh override_dh_auto_build --with quilt --buildsystem=makefile
make[1]: Leaving directory '/build/psychtoolbox-3-3.0.19.15.dfsg1'
   debian/rules override_dh_auto_test
--
Psychtoolbox/PsychTests/DrawingSpeedTest.m
Psychtoolbox/PsychTests/DrawingStuffTest.m
Psychtoolbox/PsychTests/PerceptualVBLSyncTestFlipInfo.m
Psychtoolbox/PsychTests/CLUTMappingBugTest.m
Psychtoolbox/PsychTests/AlphaBlendingTest.m
Psychtoolbox/PsychTests/VulkanInteropDebug.m
Psychtoolbox/PsychTests/DrawTextFontSwitchSpeedTest.m
Psychtoolbox/PsychTests/AsyncFlipTest.m
I: see full log at /build/psychtoolbox-3-3.0.19.15.dfsg1/build/tests_output_20260228044809.log
TESTS FAILED
dh_auto_test --buildsystem=pybuild
--
  File "/build/psychtoolbox-3-3.0.19.15.dfsg1/.pybuild/cpython3_3.13_psychtoolbox/build/psychtoolbox/__init__.py", line 28, in <module>
    from .PsychHID import PsychHID
ImportError: dynamic module does not define module export function (PyInit_PsychHID)
----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (errors=1)
E: pybuild pybuild:483: test: plugin pyproject failed with: exit code=1: cd /build/psychtoolbox-3-3.0.19.15.dfsg1/.pybuild/cpython3_3.13_psychtoolbox/build; python3.13 -m unittest discover -v
dh_auto_test: error: pybuild --test -i python{version} -p "3.14 3.13" returned exit code 13
make[1]: *** [debian/rules:98: override_dh_auto_test] Error 25


I just uploaded but forgot to include closes statement and prior
changelog entry for your changes:

    psychtoolbox-3 (3.0.19.15.dfsg1-1) unstable; urgency=medium

      * Now not so fresh upstream release

#1128693#22
Date:
2026-02-28 22:49:53 UTC
From:
To:
Hi Yaroslav,

Thanks for the integration of my proposal.

Yaroslav Halchenko, on 2026-02-28:
[…]

The new package does help solving various issue in the psychopy
build and checks, but I also see remaining work to get the test
procedure of psychopy back in working conditions.  On my end,
the autopkgtest-pkg-python that kicks in seems to load the
Python psychtoolbox module alright, but I won't know for sure
before using psychopy.   Anyways, thanks for the warning,
hopefully we'll get to a psychopy ecosystem in better shape
incrementally.

Have a nice day,  :)