You are not logged in.

#1 2026-02-05 01:19:48

vicbis
Member
From: Melbourne Australia
Registered: 2018-01-31
Posts: 13

Displaycal and python 3.14

Informational only.
The current version of 'displaycal' (3.9.17-3) is not compatible with the current version of 'python' ( 3.14.2 )
To get it to run properly I had to install 'pyenv' and install a version of python 3.13.
There does not seem to much activity at 'https://github.com/eoyilmaz/displaycal-py3' sad

Offline

#2 2026-02-05 07:37:59

arojas
Developer
From: Spain
Registered: 2011-10-09
Posts: 2,290

Re: Displaycal and python 3.14

Please specify what you mean by "is not compatible"

Offline

#3 2026-02-07 00:48:55

vicbis
Member
From: Melbourne Australia
Registered: 2018-01-31
Posts: 13

Re: Displaycal and python 3.14

Sorry about delay didn't have the Spyder with me.

vicb@amelia [ ~ ]$ displaycal
Traceback (most recent call last):
  File "/usr/bin/displaycal", line 4, in <module>
    from DisplayCAL.main import main
  File "/usr/lib/python3.14/site-packages/DisplayCAL/main.py", line 21, in <module>
    raise RuntimeError(
    ...<6 lines>...
    )
RuntimeError: Need Python version >= 3.8 <= 3.13, got 3.14.2
vicb@amelia [ ~ ]$ python -V
Python 3.14.2
vicb@amelia [ ~ ]$ pacman -Q | grep -e python\  -e displaycal 
displaycal 3.9.17-2
gst-python 1.26.10-2
python 3.14.2-2
python-dnspython 1:2.8.0-3
python-wxpython 1:4.2.3-4

Offline

#4 2026-02-07 01:40:20

arojas
Developer
From: Spain
Registered: 2011-10-09
Posts: 2,290

Re: Displaycal and python 3.14

you aren't using the current version of displaycal

Offline

#5 2026-02-07 03:34:41

vicbis
Member
From: Melbourne Australia
Registered: 2018-01-31
Posts: 13

Re: Displaycal and python 3.14

BTW I'm running this on a different box and updated displaycal

vicb@amelia [ ~ ]$ pacman -Q | grep displaycal
displaycal 3.9.17-3

It gets this far and stops.
This is the terminal dump and the informational window that is displayed shows the portion in the 'box' below.

.
.
Generating A2B1 table lookup input values...
cLUT grid res: 33
Looking up input values through A2B1 table (12 workers)...
Using CAM Jab for clipping
Acquired lock file: <DisplayCAL.main.AppLock object at 0x7f3366c1ba10>
displaycal 3.9.17 2025-09-11T10:20:26Z
arch rolling n/a x86_64
Python 3.14.2 (main, Jan  2 2026, 14:27:39) [GCC 15.2.1 20251112]
Faulthandler 
wxPython 4.2.3 gtk3 (phoenix) wxWidgets 3.2.9
Encoding: utf-8
File system encoding: utf-8
Loading /home/vicb/.config/dispcalGUI/dispcalGUI.ini
Loading /home/vicb/.config/dispcalGUI/dispcalGUI-testchart-editor.ini
Existing client using port 40365
Connecting to 40365...
Connected to 40365
Getting instance name
AppSocket.send start
data_to_send: b'getappname\n'
Sent scripting request, awaiting response...
Scripting client 127.0.0.1:43366 connected
Received scripting request from 127.0.0.1:43366: getappname
AppSocket.read() end
Got response: 'displaycal'
Notifying existing instance
AppSocket.send start
data_to_send: b'DisplayCAL\n'
Sent scripting request, awaiting response...
Received scripting request from 127.0.0.1:43366: DisplayCAL
NoneType: None
┌──────────────────────────────────────────────────────────────────────────────┐
│ Traceback (most recent call last):                                           │
│   File "/usr/lib/python3.14/site-packages/wx/core.py", line 3425, in         │
│ <lambda>                                                                     │
│     lambda event: event.callable(*event.args, **event.kw) )                  │
│                   ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^                    │
│   File "/usr/lib/python3.14/site-packages/DisplayCAL/wxwindows.py", line     │
│ 1383, in finish_processing                                                   │
│     state = self.get_app_state("plain")                                      │
│   File "/usr/lib/python3.14/site-packages/DisplayCAL/wxwindows.py", line     │
│ 1218, in get_app_state                                                       │
│     response = format_ui_element(win, format)                                │
│   File "/usr/lib/python3.14/site-packages/DisplayCAL/wxwindows.py", line     │
│ 8015, in format_ui_element                                                   │
│     (child.Label and " " + demjson.encode(child.Label)),                     │
│                            ~~~~~~~~~~~~~~^^^^^^^^^^^^^                       │
│   File "/usr/lib/python3.14/site-packages/DisplayCAL/demjson_compat.py",     │
│ line 153, in encode                                                          │
│     return json.dumps(                                                       │
│            ~~~~~~~~~~^                                                       │
│         obj,                                                                 │
│         ^^^^                                                                 │
│     ...<3 lines>...                                                          │
│         encoding=encoding or "utf-8",                                        │
│         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                        │
│     )                                                                        │
│     ^                                                                        │
│   File "/usr/lib/python3.14/json/__init__.py", line 238, in dumps            │
│     return cls(                                                              │
│            ~~~^                                                              │
│         skipkeys=skipkeys, ensure_ascii=ensure_ascii,                        │
│         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        │
│         check_circular=check_circular, allow_nan=allow_nan, indent=indent,   │
│         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   │
│         separators=separators, default=default, sort_keys=sort_keys,         │
│         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^         │
│         **kw).encode(obj)                                                    │
│         ^^^^^                                                                │
│ TypeError: JSONEncoder.__init__() got an unexpected keyword argument         │
│ 'encoding'                                                                   │
└──────────────────────────────────────────────────────────────────────────────┘

I press the 'ok' button on the window that shows the error message
and then it hangs indefinitely on 'Create profile from measurement data...' window.
All that window shows is
an ever increasing 'Elapsed time'
and 'Remaining time' as '--:--:--'

Offline

#6 2026-02-22 09:13:42

glenjo
Member
From: Pacific NW
Registered: 2020-06-09
Posts: 60

Re: Displaycal and python 3.14

I see the exact same behavior here, and solved the problem the exact same way. I don't calibrate my monitor too often, and displaycal worked great the last time I used it (last fall).

Online

#7 2026-03-06 01:04:11

vicbis
Member
From: Melbourne Australia
Registered: 2018-01-31
Posts: 13

Re: Displaycal and python 3.14

1: The wiki article needs updating ( https://wiki.archlinux.org/title/ICC_profiles ) . As following the instructions there will result in displaycal being unusable.
2: Why is this package still in the main repository? IMO it should be moved to AUR.

Offline

#8 Today 05:48:08

glenjo
Member
From: Pacific NW
Registered: 2020-06-09
Posts: 60

Re: Displaycal and python 3.14

Just a quick update. Went to use Displaycal today and ran into the exact same issue as before. I am using displaycal 3.9.17-4 with python 3.14.6-1 and a x-rite i1Studio spectrometer. I have used the same spectrometer before without any issues.

Online

#9 Today 08:00:59

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 76,171

Offline

#10 Today 18:26:43

glenjo
Member
From: Pacific NW
Registered: 2020-06-09
Posts: 60

Re: Displaycal and python 3.14

It's this error:

JSONEncoder.__init__() got an unexpected keyword argument 'encoding'



Traceback (most recent call last):
File "/usr/lib/python3.14/site-packages/wx/core.py", line 3425, in <lambda>
lambda event: event.callable(*event.args, **event.kw) )
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.14/site-packages/DisplayCAL/wxwindows.py", line 1383, in finish_processing
state = self.get_app_state("plain")
File "/usr/lib/python3.14/site-packages/DisplayCAL/wxwindows.py", line 1218, in get_app_state
response = format_ui_element(win, format)
File "/usr/lib/python3.14/site-packages/DisplayCAL/wxwindows.py", line 8015, in format_ui_element
(child.Label and " " + demjson.encode(child.Label)),
~~~~~~~~~~~~~~^^^^^^^^^^^^^
File "/usr/lib/python3.14/site-packages/DisplayCAL/demjson_compat.py", line 153, in encode
return json.dumps(
~~~~~~~~~~^
obj,
^^^^
...<3 lines>...
encoding=encoding or "utf-8",
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/usr/lib/python3.14/json/__init__.py", line 238, in dumps
return cls(
~~~^
skipkeys=skipkeys, ensure_ascii=ensure_ascii,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
check_circular=check_circular, allow_nan=allow_nan, indent=indent,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
separators=separators, default=default, sort_keys=sort_keys,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
**kw).encode(obj)
^^^^^
TypeError: JSONEncoder.__init__() got an unexpected keyword argument 'encoding'

Displaycal operates properly while controlling the spectrometer, and errors while it's computing the icc file. I tried modifying demjson_compat.py to remove the encoding argument, but I'm a complete rookie with python so I'm not sure I did it right (and it didn't work, just resulted in displaycal hanging without an error message).

Last edited by glenjo (Today 18:29:30)

Online

#11 Today 19:09:45

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 76,171

Re: Displaycal and python 3.14

pacman -Qikk python-wxpython displaycal

Offline

#12 Today 19:38:58

glenjo
Member
From: Pacific NW
Registered: 2020-06-09
Posts: 60

Re: Displaycal and python 3.14

If I go to Github eoyilmaz/displaycal-py3 and follow the instructions to build from source (Makefile build), I end up with a different error:

Fatal error: name 'sdl' is not defined

Traceback (most recent call last):
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/main.py", line 845, in main
    _main(module, name, app_lock_file_name)
    ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/main.py", line 137, in _main
    run_app(module)
    ~~~~~~~^^^^^^^^
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/main.py", line 830, in run_app
    main()
    ~~~~^^
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/display_cal.py", line 22795, in main
    app.TopWindow = StartupFrame()
                    ~~~~~~~~~~~~^^
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/display_cal.py", line 21797, in __init__
    self.startup_sound = audio.Sound(get_data_path("theme/intro_new.wav"))
                         ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/glen/Projects/displaycal-py3/.venv/lib/python3.14/site-packages/DisplayCAL/audio.py", line 601, in __init__
    rw = sdl.SDL_RWFromFile(safe_str(self._filename, "UTF-8"), "rb")
         ^^^
NameError: name 'sdl' is not defined

So the current develope branch seems to blow up trying to use sdl which is strange because here's what's shown before the error:

--- launch: Launching DisplayCAL ---
Acquired lock file: <DisplayCAL.main.AppLock object at 0x7f812c3ebb60>
displaycal 3.9.18.dev12
arch rolling n/a x86_64
Python 3.14.6 (main, Jun 15 2026, 11:36:54) [GCC 16.1.1 20260430]
Faulthandler
wxPython 4.2.5 gtk3 (phoenix) wxWidgets 3.2.9
Encoding: utf-8
File system encoding: utf-8
Loading /home/glen/.config/DisplayCAL/DisplayCAL.ini
Loading /home/glen/.config/DisplayCAL/DisplayCAL-testchart-editor.ini
listening
writing to lock file: port: 15411
Starting up...
SDL2: libSDL2-2.0.so.0
SDL2_mixer: libSDL2_mixer-2.0.so.0
SDL: libSDL-1.2.so.0
SDL_mixer: libSDL_mixer-1.2.so.0
Audio module: SDL 1.2

So I've been looking at audio.py trying to figure out what's changed since the audio works on the other version. (Looks like a lot has changed which is the nature of a development branch.)

Online

#13 Today 19:43:09

glenjo
Member
From: Pacific NW
Registered: 2020-06-09
Posts: 60

Re: Displaycal and python 3.14

Ran pacman -Qikk python-wxpython displaycal, here's the results:

Name            : python-wxpython
Version         : 1:4.2.5-1
Description     : Cross-platform GUI toolkit
Architecture    : x86_64
URL             : https://www.wxpython.org
Licenses        : custom:wxWindows
Groups          : None
Provides        : None
Depends On      : wxwidgets-gtk3  python
Optional Deps   : python-pypubsub: Alternative to the deprecated wx.lib.pubsub API
Required By     : displaycal  grass  kicad
Optional For    : libkate  python-matplotlib  python-pyudev
Conflicts With  : None
Replaces        : None
Installed Size  : 53.21 MiB
Packager        : Felix Yan <felixonmars@archlinux.org>
Build Date      : Thu 02 Apr 2026 10:31:29 AM PDT
Install Date    : Thu 02 Apr 2026 02:19:56 PM PDT
Install Reason  : Installed as a dependency for another package
Install Script  : No
Validated By    : Signature

python-wxpython: 951 total files, 0 altered files
Name            : displaycal
Version         : 3.9.17-4
Description     : Open Source Display Calibration and Characterization powered by Argyll CMS (Formerly known as dispcalGUI)
Architecture    : x86_64
URL             : https://github.com/eoyilmaz/displaycal-py3
Licenses        : GPL-3.0-or-later
Groups          : None
Provides        : None
Depends On      : argyllcms  dbus  dbus-python  glib2  python-certifi  python-distro  python-numpy  python-pillow  python-send2trash  python-wxpython  python-zeroconf
Optional Deps   : gnome-color-manager: profile installation for GNOME
                  colord-kde: profile installation for KDE Plasma [installed]
Required By     : None
Optional For    : None
Conflicts With  : None
Replaces        : None
Installed Size  : 40.05 MiB
Packager        : Balló György <bgyorgy@archlinux.org>
Build Date      : Thu 11 Jun 2026 12:08:34 AM PDT
Install Date    : Sat 20 Jun 2026 11:51:58 PM PDT
Install Reason  : Explicitly installed
Install Script  : No
Validated By    : Signature

displaycal: 1605 total files, 0 altered files

Online

#14 Today 19:43:41

glenjo
Member
From: Pacific NW
Registered: 2020-06-09
Posts: 60

Re: Displaycal and python 3.14

And thanks, I appreciate the help!

Online

#15 Today 19:56:20

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 76,171

Re: Displaycal and python 3.14

https://github.com/eoyilmaz/displaycal-py3/issues/702
Seems the upstream fix hasn't made it into any release.

You probably don't have https://archlinux.org/packages/extra/x8 … on-pysdl3/ ?

Offline

#16 Today 20:24:22

glenjo
Member
From: Pacific NW
Registered: 2020-06-09
Posts: 60

Re: Displaycal and python 3.14

Yes, I have python-pysdl3 installed:

Version         : 0.9.11b1-1
Description     : Python ctypes wrapper around SDL3
Architecture    : x86_64
URL             : https://github.com/Aermoss/PySDL3
Licenses        : MIT
Groups          : None
Provides        : None
Depends On      : alsa-lib  freetype2  python-aiohttp  python-packaging  python-requests  sdl3
Optional Deps   : sdl3_image [installed]
                  sdl3_ttf [installed]
Required By     : None
Optional For    : None
Conflicts With  : None
Replaces        : None
Installed Size  : 3.01 MiB
Packager        : Martin Rys <martin@archlinux.org>
Build Date      : Tue 12 May 2026 04:53:24 AM PDT
Install Date    : Sat 20 Jun 2026 07:28:23 PM PDT
Install Reason  : Explicitly installed
Install Script  : Yes
Validated By    : Signature

It's been installed for most of this (and a couple of re-boots).

Online

#17 Today 20:32:54

loqs
Member
Registered: 2014-03-06
Posts: 18,944

Re: Displaycal and python 3.14

Offline

#18 Today 20:36:29

seth
Member
From: Won't reply 2 private help req
Registered: 2012-09-03
Posts: 76,171

Offline

#19 Today 20:52:37

glenjo
Member
From: Pacific NW
Registered: 2020-06-09
Posts: 60

Re: Displaycal and python 3.14

Installed python-pysdl2 from the AUR and rebuilt the develop branch of displaycal-py3. Got the same sdl error.

I'll try installing python3.13 and pointing the arch displaycal towards that.

Thanks!

Online

Board footer

Powered by FluxBB