Open oaschwab opened 1 month ago
Can you try with DisplayCAL 3.9.14 which is just released. And it might be because the fact that the executables are not signed, I'm not sure. Also try downloading ArgyllCMS manually and showing it through File -> Locate ArgyllCMS executables...
.
Thank you for the quick reply but I get the same error as before I uninstalled the old version completely. Installed the newer version in the root directory instead of c:/program files/ Loaded and located the argyllcms executables. I also tried running the dispread.exe in a terminal window in the background to see if it was get it to move to the next step but it didn't work. I tried running displaycal as an administrator and that didn't work either.
Same error as oaschwab on installer.
Then I tried to build & freeze (py3.10.11, VS2022). No Inno setup, just frozen exes. Frozen executables run OK as long as CCSS and HTML reports have no spaces in path. But generated HTML report is faulty, measured values seem wrong. I'm running this on a W10 virtual machine (py3.10.11, VS2022) and a W10 host. Using either ArgyllCMS or old DisplayCAL using certain CCSS (W10 host) or using DisplayCAL 3.9.14 with "calibrated screen report" (W10 virtual machine) gives same whitepoint. But DisplayCAL 3.9.14 HTML report have color coordinates moved up to 2-3dE like if it has not applied CCSS, although it shows CCSS file on HTML reprort. DisplayCAL 3.9.14 for macOS does not show this issue in HTML reports.
Display profile was generated by monitor manufacturer HW calibration suite, so there are no VCGT issues, they are linear.
HTML has a minnor issue saying that HTML file does not exist after reprot measurements. Monitoring folder I saw that actual HTML file does not show on Windows Explorer until error popup with "cannot open HTML file" closes. Maybe some file close is placed after it should.
Also there were some random errors where DisplayCAL-py3 3.914 cannot access my i1d3, but running a simple "report on calibrated display" which is short & fast seems to fix this issue.
If I copy the frozen exe folder to my W10 host it fails with the same error as oaschwab.
So I looked to python output when I executed freeze.py. Maybe these issues with installer or portable frozen folder (no inno setup) used on another computer differet than the one that cretaed the exes, are related to MSVC DLLs:
D:\src\otros\displaycal-py3>C:\Python\Python310\python.exe DisplayCAL\freeze.py
pydir : D:\src\otros\displaycal-py3\DisplayCAL
source_dir: D:\src\otros\displaycal-py3
WARNING: OpenAL32.dll not found!
obj: theme/icons/22x22/*.png
obj: theme/icons/24x24/*.png
Running py2exe.freeze!
INFO:runtime:Analyzing the code
INFO:runtime:Found 1464 modules, 553 are missing, 8 may be missing
553 missing Modules
------------------
? Carbon.Appearance imported from wx.lib.colourutils, wx.lib.stattext
? DisplayCAL.lib64.RealDisplaySizeMM imported from DisplayCAL.RealDisplaySizeMM, RealDisplaySizeMM
? Foundation imported from send2trash.mac.modern
? IPython.display imported from PIL.ImageShow
? IPython.lib.pretty imported from PIL.Image
? Numeric imported from numpy.distutils.system_info
? OpenSSL.SSL imported from urllib3.contrib.pyopenssl
? OpenSSL.crypto imported from urllib3.contrib.pyopenssl
? PyQt6 imported from PIL.ImageQt
? PyQt6.QtCore imported from PIL.ImageQt
? PyQt6.QtGui imported from PIL.ImageQt
? PySide6 imported from PIL.ImageQt
? PySide6.QtCore imported from PIL.ImageQt
? PySide6.QtGui imported from PIL.ImageQt
? StringIO imported from six
? _code.getfslineno imported from _pytest.mark.structures
? _core.False_ imported from numpy
? _core.ScalarType imported from numpy
? _core.True_ imported from numpy
? _core._get_promotion_state imported from numpy
? _core._no_nep50_warning imported from numpy
? _core._set_promotion_state imported from numpy
? _core.abs imported from numpy
? _core.absolute imported from numpy
? _core.acos imported from numpy
? _core.acosh imported from numpy
? _core.add imported from numpy
? _core.all imported from numpy
? _core.allclose imported from numpy
? _core.amax imported from numpy
? _core.amin imported from numpy
? _core.any imported from numpy
? _core.arange imported from numpy
? _core.arccos imported from numpy
? _core.arccosh imported from numpy
? _core.arcsin imported from numpy
? _core.arcsinh imported from numpy
? _core.arctan imported from numpy
? _core.arctan2 imported from numpy
? _core.arctanh imported from numpy
? _core.argmax imported from numpy
? _core.argmin imported from numpy
? _core.argpartition imported from numpy
? _core.argsort imported from numpy
? _core.argwhere imported from numpy
? _core.around imported from numpy
? _core.array imported from numpy
? _core.array2string imported from numpy
? _core.array_equal imported from numpy
? _core.array_equiv imported from numpy
? _core.array_repr imported from numpy
? _core.array_str imported from numpy
? _core.asanyarray imported from numpy
? _core.asarray imported from numpy
? _core.ascontiguousarray imported from numpy
? _core.asfortranarray imported from numpy
? _core.asin imported from numpy
? _core.asinh imported from numpy
? _core.astype imported from numpy
? _core.atan imported from numpy
? _core.atan2 imported from numpy
? _core.atanh imported from numpy
? _core.atleast_1d imported from numpy
? _core.atleast_2d imported from numpy
? _core.atleast_3d imported from numpy
? _core.base_repr imported from numpy
? _core.binary_repr imported from numpy
? _core.bitwise_and imported from numpy
? _core.bitwise_count imported from numpy
? _core.bitwise_invert imported from numpy
? _core.bitwise_left_shift imported from numpy
? _core.bitwise_not imported from numpy
? _core.bitwise_or imported from numpy
? _core.bitwise_right_shift imported from numpy
? _core.bitwise_xor imported from numpy
? _core.block imported from numpy
? _core.bool imported from numpy
? _core.bool_ imported from numpy
? _core.broadcast imported from numpy
? _core.busday_count imported from numpy
? _core.busday_offset imported from numpy
? _core.busdaycalendar imported from numpy
? _core.byte imported from numpy
? _core.bytes_ imported from numpy
? _core.can_cast imported from numpy
? _core.cbrt imported from numpy
? _core.cdouble imported from numpy
? _core.ceil imported from numpy
? _core.character imported from numpy
? _core.choose imported from numpy
? _core.clip imported from numpy
? _core.clongdouble imported from numpy
? _core.complex128 imported from numpy
? _core.complex64 imported from numpy
? _core.complexfloating imported from numpy
? _core.compress imported from numpy
? _core.concat imported from numpy
? _core.concatenate imported from numpy
? _core.conj imported from numpy
? _core.conjugate imported from numpy
? _core.convolve imported from numpy
? _core.copysign imported from numpy
? _core.copyto imported from numpy
? _core.correlate imported from numpy
? _core.cos imported from numpy
? _core.cosh imported from numpy
? _core.count_nonzero imported from numpy
? _core.cross imported from numpy
? _core.csingle imported from numpy
? _core.cumprod imported from numpy
? _core.cumsum imported from numpy
? _core.cumulative_prod imported from numpy
? _core.cumulative_sum imported from numpy
? _core.datetime64 imported from numpy
? _core.datetime_as_string imported from numpy
? _core.datetime_data imported from numpy
? _core.deg2rad imported from numpy
? _core.degrees imported from numpy
? _core.diagonal imported from numpy
? _core.divide imported from numpy
? _core.divmod imported from numpy
? _core.dot imported from numpy
? _core.double imported from numpy
? _core.dtype imported from numpy
? _core.e imported from numpy
? _core.einsum imported from numpy
? _core.einsum_path imported from numpy
? _core.empty imported from numpy
? _core.empty_like imported from numpy
? _core.equal imported from numpy
? _core.errstate imported from numpy
? _core.euler_gamma imported from numpy
? _core.exp imported from numpy
? _core.exp2 imported from numpy
? _core.expm1 imported from numpy
? _core.fabs imported from numpy
? _core.finfo imported from numpy
? _core.flatiter imported from numpy
? _core.flatnonzero imported from numpy
? _core.flexible imported from numpy
? _core.float16 imported from numpy
? _core.float32 imported from numpy
? _core.float64 imported from numpy
? _core.float_power imported from numpy
? _core.floating imported from numpy
? _core.floor imported from numpy
? _core.floor_divide imported from numpy
? _core.fmax imported from numpy
? _core.fmin imported from numpy
? _core.fmod imported from numpy
? _core.format_float_positional imported from numpy
? _core.format_float_scientific imported from numpy
? _core.frexp imported from numpy
? _core.from_dlpack imported from numpy
? _core.frombuffer imported from numpy
? _core.fromfile imported from numpy
? _core.fromfunction imported from numpy
? _core.fromiter imported from numpy
? _core.frompyfunc imported from numpy
? _core.fromstring imported from numpy
? _core.full imported from numpy
? _core.full_like imported from numpy
? _core.gcd imported from numpy
? _core.generic imported from numpy
? _core.geomspace imported from numpy
? _core.get_printoptions imported from numpy
? _core.getbufsize imported from numpy
? _core.geterr imported from numpy
? _core.geterrcall imported from numpy
? _core.greater imported from numpy
? _core.greater_equal imported from numpy
? _core.half imported from numpy
? _core.heaviside imported from numpy
? _core.hstack imported from numpy
? _core.hypot imported from numpy
? _core.identity imported from numpy
? _core.iinfo imported from numpy
? _core.indices imported from numpy
? _core.inexact imported from numpy
? _core.inf imported from numpy
? _core.inner imported from numpy
? _core.int16 imported from numpy
? _core.int32 imported from numpy
? _core.int64 imported from numpy
? _core.int8 imported from numpy
? _core.int_ imported from numpy
? _core.intc imported from numpy
? _core.integer imported from numpy
? _core.intp imported from numpy
? _core.invert imported from numpy
? _core.is_busday imported from numpy
? _core.isclose imported from numpy
? _core.isdtype imported from numpy
? _core.isfinite imported from numpy
? _core.isfortran imported from numpy
? _core.isinf imported from numpy
? _core.isnan imported from numpy
? _core.isnat imported from numpy
? _core.isscalar imported from numpy
? _core.issubdtype imported from numpy
? _core.lcm imported from numpy
? _core.ldexp imported from numpy
? _core.left_shift imported from numpy
? _core.less imported from numpy
? _core.less_equal imported from numpy
? _core.lexsort imported from numpy
? _core.linspace imported from numpy
? _core.little_endian imported from numpy
? _core.log imported from numpy
? _core.log10 imported from numpy
? _core.log1p imported from numpy
? _core.log2 imported from numpy
? _core.logaddexp imported from numpy
? _core.logaddexp2 imported from numpy
? _core.logical_and imported from numpy
? _core.logical_not imported from numpy
? _core.logical_or imported from numpy
? _core.logical_xor imported from numpy
? _core.logspace imported from numpy
? _core.long imported from numpy
? _core.longdouble imported from numpy
? _core.longlong imported from numpy
? _core.matmul imported from numpy
? _core.matrix_transpose imported from numpy
? _core.max imported from numpy
? _core.maximum imported from numpy
? _core.may_share_memory imported from numpy
? _core.mean imported from numpy
? _core.min imported from numpy
? _core.min_scalar_type imported from numpy
? _core.minimum imported from numpy
? _core.mod imported from numpy
? _core.modf imported from numpy
? _core.moveaxis imported from numpy
? _core.multiply imported from numpy
? _core.nan imported from numpy
? _core.ndarray imported from numpy
? _core.ndim imported from numpy
? _core.nditer imported from numpy
? _core.negative imported from numpy
? _core.nested_iters imported from numpy
? _core.newaxis imported from numpy
? _core.nextafter imported from numpy
? _core.nonzero imported from numpy
? _core.not_equal imported from numpy
? _core.number imported from numpy
? _core.object_ imported from numpy
? _core.ones imported from numpy
? _core.ones_like imported from numpy
? _core.outer imported from numpy
? _core.partition imported from numpy
? _core.permute_dims imported from numpy
? _core.pi imported from numpy
? _core.positive imported from numpy
? _core.pow imported from numpy
? _core.power imported from numpy
? _core.prod imported from numpy
? _core.promote_types imported from numpy
? _core.ptp imported from numpy
? _core.put imported from numpy
? _core.putmask imported from numpy
? _core.rad2deg imported from numpy
? _core.radians imported from numpy
? _core.ravel imported from numpy
? _core.recarray imported from numpy
? _core.reciprocal imported from numpy
? _core.record imported from numpy
? _core.remainder imported from numpy
? _core.repeat imported from numpy
? _core.require imported from numpy
? _core.reshape imported from numpy
? _core.resize imported from numpy
? _core.result_type imported from numpy
? _core.right_shift imported from numpy
? _core.rint imported from numpy
? _core.roll imported from numpy
? _core.rollaxis imported from numpy
? _core.round imported from numpy
? _core.sctypeDict imported from numpy
? _core.searchsorted imported from numpy
? _core.set_printoptions imported from numpy
? _core.setbufsize imported from numpy
? _core.seterr imported from numpy
? _core.seterrcall imported from numpy
? _core.shape imported from numpy
? _core.shares_memory imported from numpy
? _core.short imported from numpy
? _core.sign imported from numpy
? _core.signbit imported from numpy
? _core.signedinteger imported from numpy
? _core.sin imported from numpy
? _core.single imported from numpy
? _core.sinh imported from numpy
? _core.size imported from numpy
? _core.sort imported from numpy
? _core.spacing imported from numpy
? _core.sqrt imported from numpy
? _core.square imported from numpy
? _core.squeeze imported from numpy
? _core.stack imported from numpy
? _core.std imported from numpy
? _core.str_ imported from numpy
? _core.subtract imported from numpy
? _core.sum imported from numpy
? _core.swapaxes imported from numpy
? _core.take imported from numpy
? _core.tan imported from numpy
? _core.tanh imported from numpy
? _core.tensordot imported from numpy
? _core.timedelta64 imported from numpy
? _core.trace imported from numpy
? _core.transpose imported from numpy
? _core.true_divide imported from numpy
? _core.trunc imported from numpy
? _core.typecodes imported from numpy
? _core.ubyte imported from numpy
? _core.ufunc imported from numpy
? _core.uint imported from numpy
? _core.uint16 imported from numpy
? _core.uint32 imported from numpy
? _core.uint64 imported from numpy
? _core.uint8 imported from numpy
? _core.uintc imported from numpy
? _core.uintp imported from numpy
? _core.ulong imported from numpy
? _core.ulonglong imported from numpy
? _core.unsignedinteger imported from numpy
? _core.unstack imported from numpy
? _core.ushort imported from numpy
? _core.var imported from numpy
? _core.vdot imported from numpy
? _core.vecdot imported from numpy
? _core.void imported from numpy
? _core.vstack imported from numpy
? _core.where imported from numpy
? _core.zeros imported from numpy
? _core.zeros_like imported from numpy
? _dummy_thread imported from numpy._core.arrayprint
? _frozen_importlib imported from importlib, importlib.abc, zipimport
? _frozen_importlib_external imported from importlib, importlib._bootstrap, importlib.abc, zipimport
? _manylinux imported from packaging._manylinux, pkg_resources._vendor.packaging._manylinux
? _posixshmem imported from multiprocessing.resource_tracker, multiprocessing.shared_memory
? _ufunc imported from numpy._typing
? _utils.set_module imported from numpy._core._exceptions, numpy._core._machar, numpy._core._ufunc_config, numpy._core.defchararray, numpy._core.fromnumeric, numpy._core.getlimits, numpy._core.memmap, numpy._core.numerictypes, numpy._core.overrides, numpy._core.records, numpy._globals, numpy._typing, numpy.lib._datasource, numpy.lib._index_tricks_impl, numpy.lib._polynomial_impl, numpy.lib._type_check_impl, numpy.matrixlib.defmatrix
? _winreg imported from pkg_resources._vendor.appdirs, platform
? apport_python_hook imported from exceptiongroup._formatting
? argcomplete.completers imported from _pytest._argcomplete
? asyncio.DefaultEventLoopPolicy imported from -
? brotli imported from urllib3.response, urllib3.util.request
? brotlicffi imported from urllib3.response, urllib3.util.request
? chardet imported from pygments.lexer, requests
? collections.Iterable imported from send2trash.compat
? com.sun imported from pkg_resources._vendor.appdirs
? com.sun.jna imported from pkg_resources._vendor.appdirs
? com.sun.jna.platform imported from pkg_resources._vendor.appdirs
? comtypes.gen imported from comtypes.client, comtypes.client._code_cache, comtypes.client._generate
? comtypes.gen.TaskbarLib imported from DisplayCAL.taskbar
? comtypes.hints imported from comtypes, comtypes.GUID, comtypes._post_coinit.bstr, comtypes._post_coinit.misc, comtypes.automation, comtypes.client, comtypes.persist, comtypes.safearray, comtypes.tools.codegenerator.typeannotator, comtypes.typeinfo
? contrib.emscripten.inject_into_urllib3 imported from urllib3
? controllers.BaseController imported from pychromecast.socket_client
? cryptography imported from requests, urllib3.contrib.pyopenssl
? cryptography.x509 imported from urllib3.contrib.pyopenssl
? cryptography.x509.extensions imported from urllib3.contrib.pyopenssl
? ctypes._CArgObject imported from comtypes.automation
? ctypes._CData imported from comtypes
? dbus imported from DisplayCAL.util_dbus
? dbus.mainloop imported from DisplayCAL.util_dbus
? defusedxml imported from PIL.Image
? diagram.railroad_to_html imported from pkg_resources._vendor.pyparsing.core, pyparsing.core
? diagram.to_railroad imported from pkg_resources._vendor.pyparsing.core, pyparsing.core
? drivers.get_audio_driver imported from pyglet.media
? dummy.Process imported from multiprocessing.pool
? dummy_threading imported from requests.cookies
? gi.repository imported from DisplayCAL.colord, DisplayCAL.util_dbus, pyglet.media.codecs.gstreamer, send2trash.plat_gio
? google.protobuf.enable_deterministic_proto_serialization imported from google.protobuf.internal.api_implementation
? google.protobuf.internal._api_implementation imported from google.protobuf.internal.api_implementation
? google.protobuf.pyext._message imported from google.protobuf.descriptor, google.protobuf.internal.api_implementation, google.protobuf.pyext.cpp_message
? h2.config imported from urllib3.http2.connection
? h2.connection imported from urllib3.http2.connection
? h2.events imported from urllib3.http2.connection
? importlib.resources.abc imported from _pytest.assertion.rewrite
? importlib.resources.readers imported from _pytest.assertion.rewrite
? java.lang imported from platform
? jinja2 imported from pkg_resources._vendor.pyparsing.diagram, pyparsing.diagram
? js imported from urllib3.contrib.emscripten.fetch
? matrixlib.asmatrix imported from numpy
? matrixlib.bmat imported from numpy
? matrixlib.matrix imported from numpy
? numarray imported from numpy.distutils.system_info
? numpy._core.add imported from numpy.linalg._linalg
? numpy._core.all imported from numpy.linalg._linalg, numpy.testing._private.utils
? numpy._core.amax imported from numpy.linalg._linalg
? numpy._core.amin imported from numpy.linalg._linalg
? numpy._core.arange imported from numpy.fft._helper, numpy.testing._private.utils
? numpy._core.argsort imported from numpy.linalg._linalg
? numpy._core.array imported from numpy.lib._polynomial_impl, numpy.linalg._linalg, numpy.testing._private.utils
? numpy._core.array2string imported from numpy.testing._private.utils
? numpy._core.array_repr imported from numpy.testing._private.utils
? numpy._core.asanyarray imported from numpy.linalg._linalg
? numpy._core.asarray imported from numpy.fft._helper, numpy.fft._pocketfft, numpy.lib._array_utils_impl, numpy.linalg._linalg
? numpy._core.atleast_1d imported from numpy.lib._polynomial_impl
? numpy._core.atleast_2d imported from numpy.linalg._linalg
? numpy._core.atleast_3d imported from numpy.lib._shape_base_impl
? numpy._core.bool imported from numpy._array_api_info
? numpy._core.cdouble imported from numpy.linalg._linalg
? numpy._core.complex128 imported from numpy._array_api_info
? numpy._core.complex64 imported from numpy._array_api_info
? numpy._core.complexfloating imported from numpy.linalg._linalg
? numpy._core.conjugate imported from numpy.fft._pocketfft
? numpy._core.count_nonzero imported from numpy.linalg._linalg
? numpy._core.cross imported from numpy.linalg._linalg
? numpy._core.csingle imported from numpy.linalg._linalg
? numpy._core.diagonal imported from numpy.linalg._linalg
? numpy._core.divide imported from numpy.linalg._linalg
? numpy._core.dot imported from numpy.lib._polynomial_impl, numpy.linalg._linalg
? numpy._core.double imported from numpy.linalg._linalg
? numpy._core.dtype imported from numpy._array_api_info, numpy._core._add_newdocs_scalars
? numpy._core.empty imported from numpy.fft._helper, numpy.linalg._linalg, numpy.testing._private.utils
? numpy._core.empty_like imported from numpy.fft._pocketfft, numpy.linalg._linalg
? numpy._core.errstate imported from numpy.linalg._linalg, numpy.testing._private.utils
? numpy._core.finfo imported from numpy.lib._polynomial_impl, numpy.linalg._linalg
? numpy._core.float32 imported from numpy._array_api_info, numpy.testing._private.utils
? numpy._core.float64 imported from numpy._array_api_info
? numpy._core.hstack imported from numpy.lib._polynomial_impl
? numpy._core.iinfo imported from numpy.lib._twodim_base_impl
? numpy._core.inexact imported from numpy.linalg._linalg
? numpy._core.inf imported from numpy.linalg._linalg, numpy.testing._private.utils
? numpy._core.int16 imported from numpy._array_api_info
? numpy._core.int32 imported from numpy._array_api_info
? numpy._core.int64 imported from numpy._array_api_info
? numpy._core.int8 imported from numpy._array_api_info
? numpy._core.intc imported from numpy.linalg._linalg
? numpy._core.integer imported from numpy.fft._helper
? numpy._core.intp imported from numpy._array_api_info, numpy.linalg._linalg, numpy.testing._private.utils
? numpy._core.isfinite imported from numpy.linalg._linalg
? numpy._core.isnan imported from numpy.linalg._linalg, numpy.testing._private.utils
? numpy._core.isnat imported from numpy.testing._private.utils
? numpy._core.isscalar imported from numpy.lib._polynomial_impl, numpy.testing._private.utils
? numpy._core.linspace imported from numpy.lib._index_tricks_impl
? numpy._core.matmul imported from numpy.linalg._linalg
? numpy._core.matrix_transpose imported from numpy.linalg._linalg
? numpy._core.max imported from numpy.testing._private.utils
? numpy._core.moveaxis imported from numpy.linalg._linalg
? numpy._core.multiply imported from numpy.linalg._linalg
? numpy._core.ndarray imported from numpy.lib._utils_impl, numpy.testing._private.utils
? numpy._core.newaxis imported from numpy.linalg._linalg
? numpy._core.number imported from numpy.testing._private.utils
? numpy._core.object_ imported from numpy.linalg._linalg, numpy.testing._private.utils
? numpy._core.ones imported from numpy.lib._polynomial_impl
? numpy._core.outer imported from numpy.linalg._linalg
? numpy._core.prod imported from numpy.linalg._linalg
? numpy._core.reciprocal imported from numpy.fft._pocketfft, numpy.linalg._linalg
? numpy._core.result_type imported from numpy.fft._pocketfft, numpy.testing._private.utils
? numpy._core.roll imported from numpy.fft._helper
? numpy._core.sign imported from numpy.linalg._linalg
? numpy._core.signbit imported from numpy.testing._private.utils
? numpy._core.single imported from numpy.linalg._linalg
? numpy._core.sort imported from numpy.linalg._linalg
? numpy._core.sqrt imported from numpy.fft._pocketfft, numpy.linalg._linalg
? numpy._core.sum imported from numpy.linalg._linalg
? numpy._core.swapaxes imported from numpy.linalg._linalg
? numpy._core.take imported from numpy.fft._pocketfft
? numpy._core.tensordot imported from numpy.linalg._linalg
? numpy._core.trace imported from numpy.linalg._linalg
? numpy._core.transpose imported from numpy.lib._function_base_impl, numpy.linalg._linalg
? numpy._core.uint16 imported from numpy._array_api_info
? numpy._core.uint32 imported from numpy._array_api_info
? numpy._core.uint64 imported from numpy._array_api_info
? numpy._core.uint8 imported from numpy._array_api_info
? numpy._core.vecdot imported from numpy.linalg._linalg
? numpy._core.vstack imported from numpy.lib._shape_base_impl
? numpy._core.zeros imported from numpy.linalg._linalg
? numpy._distributor_init_local imported from -
? numpy.linalg.eigvals imported from numpy.lib._polynomial_impl
? numpy.linalg.inv imported from numpy.lib._polynomial_impl, numpy.matrixlib.defmatrix
? numpy.linalg.lstsq imported from numpy.lib._polynomial_impl
? numpy.linalg.matrix_power imported from numpy.matrixlib.defmatrix
? numpy.linalg.pinv imported from numpy.matrixlib.defmatrix
? numpy.ma.MAError imported from numpy.ma.mrecords
? numpy.ma.MaskedArray imported from numpy.lib._npyio_impl, numpy.lib.recfunctions, numpy.ma.mrecords
? numpy.ma.filled imported from numpy.ma.mrecords
? numpy.ma.getdata imported from numpy.ma.mrecords
? numpy.ma.getmaskarray imported from numpy.ma.mrecords
? numpy.ma.make_mask_descr imported from numpy.lib._npyio_impl
? numpy.ma.masked imported from numpy.ma.mrecords
? numpy.ma.masked_array imported from numpy.ma.mrecords
? numpy.ma.nomask imported from numpy.ma.mrecords
? numpy.testing.IS_PYPY imported from numpy._pytesttester
? numpy_distutils imported from numpy.f2py.diagnose
? numpy_distutils.command.build_flib imported from numpy.f2py.diagnose
? numpy_distutils.command.cpuinfo imported from numpy.f2py.diagnose
? numpy_distutils.cpuinfo imported from numpy.f2py.diagnose
? numpy_distutils.fcompiler imported from numpy.f2py.diagnose
? olefile imported from PIL.FpxImagePlugin, PIL.MicImagePlugin
? org.python.core imported from copy, pickle
? os.path imported from _pytest._py.path, _pytest.pathlib, ctypes._aix, distutils.file_util, numpy._core.memmap, os, pkg_resources, pkgutil, py_compile, pyglet.event, pyglet.media.codecs.pyogg, pygments.formatters, pygments.lexers, pygments.regexopt, requests.adapters, send2trash.plat_other, send2trash.win.legacy, send2trash.win.modern, sysconfig, tracemalloc, unittest, unittest.util
? pep517 imported from importlib.metadata
? pexpect imported from _pytest.legacypath, _pytest.pytester
? pkg_resources.extern.appdirs imported from pkg_resources
? pkg_resources.extern.importlib_resources imported from pkg_resources._vendor.jaraco.text
? pkg_resources.extern.jaraco.context imported from pkg_resources._vendor.jaraco.text
? pkg_resources.extern.jaraco.functools imported from pkg_resources._vendor.jaraco.text
? pkg_resources.extern.jaraco.text imported from pkg_resources
? pkg_resources.extern.more_itertools imported from pkg_resources._vendor.jaraco.functools
? pkg_resources.extern.packaging imported from pkg_resources
? pkg_resources.extern.pyparsing imported from pkg_resources._vendor.packaging.markers, pkg_resources._vendor.packaging.requirements
? psutil imported from DisplayCAL.multiprocess, numpy.testing._private.utils
? pyglet.graphics.shader imported from pyglet.model, pyglet.resource, pyglet.shapes, pyglet.sprite
? pyglet.graphics.vertexdomain imported from pyglet.model
? pyglet.image.animation imported from pyglet.media.codecs.base, pyglet.resource
? pyglet.image.atlas imported from pyglet.resource
? pyglet.libs.darwin.AutoReleasePool imported from pyglet.app.cocoa
? pyglet.libs.darwin.CFSTR imported from pyglet.media.codecs.coreaudio
? pyglet.libs.darwin.CFURLRef imported from pyglet.libs.darwin.coreaudio
? pyglet.libs.darwin.ObjCClass imported from pyglet.app.cocoa
? pyglet.libs.darwin.ObjCInstance imported from pyglet.app.cocoa
? pyglet.libs.darwin.ObjCSubclass imported from pyglet.app.cocoa
? pyglet.libs.darwin.PyObjectEncoding imported from pyglet.app.cocoa
? pyglet.libs.darwin.cf imported from pyglet.media.codecs.coreaudio
? pyglet.libs.darwin.get_selector imported from pyglet.app.cocoa
? pyglet.libs.darwin.send_super imported from pyglet.app.cocoa
? pyglet.media.codecs.AudioData imported from pyglet.media.codecs.coreaudio, pyglet.media.codecs.pyogg, pyglet.media.codecs.wmf, pyglet.media.drivers.base, pyglet.media.drivers.pulse.adaptation, pyglet.media.drivers.pulse.interface, pyglet.media.drivers.xaudio2.adaptation
? pyglet.media.codecs.AudioFormat imported from pyglet.media.codecs.coreaudio, pyglet.media.codecs.pyogg, pyglet.media.codecs.wmf, pyglet.media.drivers.pulse.adaptation, pyglet.media.drivers.pulse.interface, pyglet.media.drivers.xaudio2.adaptation
? pyglet.media.codecs.Source imported from pyglet.media.drivers.pulse.adaptation, pyglet.media.drivers.xaudio2.adaptation, pyglet.resource
? pyglet.media.codecs.StaticSource imported from pyglet.media.codecs.pyogg, pyglet.media.codecs.wmf
? pyglet.media.codecs.VideoFormat imported from pyglet.media.codecs.wmf
? pyglet.text.caret imported from pyglet.gui.widgets
? pyglet.text.document imported from pyglet.resource
? pyglet.text.layout imported from pyglet.gui.ninepatch, pyglet.gui.widgets
? pyglet.window.win32 imported from pyglet.media.drivers.directsound.interface
? pyodide.ffi imported from urllib3.contrib.emscripten.fetch
? pyogg imported from pyglet.media.codecs.pyogg
? pyparsing.Word imported from pyparsing.unicode
? railroad imported from pkg_resources._vendor.pyparsing.diagram, pyparsing.diagram
? readline imported from cmd, code, pdb
? resource imported from DisplayCAL.wexpect
? setuptools.command imported from numpy.distutils.core
? setuptools.command.bdist_rpm imported from numpy.distutils.command.bdist_rpm
? setuptools.command.develop imported from numpy.distutils.command.develop
? setuptools.command.egg_info imported from numpy.distutils.command.egg_info
? setuptools.command.install imported from numpy.distutils.command.install
? setuptools.command.sdist imported from numpy.distutils.command.sdist
? simplejson imported from requests.compat
? socks imported from urllib3.contrib.socks
? threadpoolctl imported from numpy.lib._utils_impl
? tomllib imported from _pytest.config.findpaths
? urllib.quote imported from send2trash.plat_other
? util.SKIPPABLE_HEADERS imported from urllib3.connection
? util.SKIP_HEADER imported from urllib3.connection
? win32com.gen_py imported from win32com
? wmi imported from DisplayCAL.edid, DisplayCAL.worker
? wx.lib.agw.aui.AuiDefaultTabArt imported from DisplayCAL.wxwindows
? zstandard imported from urllib3.response, urllib3.util.request
Submodules that appear to be missing, but could also be global names in the parent package:
---------------------------------------------------------------------------------------------
? codecs.MediaDecoder imported from pyglet.media
? codecs.Source imported from pyglet.media
? codecs.SourceGroup imported from pyglet.media
? codecs.StaticSource imported from pyglet.media
? codecs.StreamingSource imported from pyglet.media
? codecs.add_default_codecs imported from pyglet.media, pyglet.model
? codecs.have_ffmpeg imported from pyglet.media
? codecs.registry imported from pyglet.media, pyglet.model
Building 'D:\src\otros\displaycal-py3\DisplayCAL\..\dist\py2exe.win-amd64-py3.10\DisplayCAL-3.9.14\DisplayCAL-VRML-to-X3D-converter-console.exe'.
Building 'D:\src\otros\displaycal-py3\DisplayCAL\..\dist\py2exe.win-amd64-py3.10\DisplayCAL-3.9.14\DisplayCAL-eeColor-to-madVR-converter.exe'.
Building 'D:\src\otros\displaycal-py3\DisplayCAL\..\dist\py2exe.win-amd64-py3.10\DisplayCAL-3.9.14\DisplayCAL.exe'.
Building 'D:\src\otros\displaycal-py3\DisplayCAL\..\dist\py2exe.win-amd64-py3.10\DisplayCAL-3.9.14\DisplayCAL-3DLUT-maker.exe'.
Building 'D:\src\otros\displaycal-py3\DisplayCAL\..\dist\py2exe.win-amd64-py3.10\DisplayCAL-3.9.14\DisplayCAL-apply-profiles.exe'.
Building 'D:\src\otros\displaycal-py3\DisplayCAL\..\dist\py2exe.win-amd64-py3.10\DisplayCAL-3.9.14\DisplayCAL-curve-viewer.exe'.
Building 'D:\src\otros\displaycal-py3\DisplayCAL\..\dist\py2exe.win-amd64-py3.10\DisplayCAL-3.9.14\DisplayCAL-profile-info.exe'.
Building 'D:\src\otros\displaycal-py3\DisplayCAL\..\dist\py2exe.win-amd64-py3.10\DisplayCAL-3.9.14\DisplayCAL-scripting-client.exe'.
Building 'D:\src\otros\displaycal-py3\DisplayCAL\..\dist\py2exe.win-amd64-py3.10\DisplayCAL-3.9.14\DisplayCAL-synthprofile.exe'.
Building 'D:\src\otros\displaycal-py3\DisplayCAL\..\dist\py2exe.win-amd64-py3.10\DisplayCAL-3.9.14\DisplayCAL-testchart-editor.exe'.
Building 'D:\src\otros\displaycal-py3\DisplayCAL\..\dist\py2exe.win-amd64-py3.10\DisplayCAL-3.9.14\DisplayCAL-VRML-to-X3D-converter.exe'.
Building 'D:\src\otros\displaycal-py3\DisplayCAL\..\dist\py2exe.win-amd64-py3.10\DisplayCAL-3.9.14\DisplayCAL-apply-profiles-launcher.exe'.
py2exe.freeze DONE!
**I: Searching for assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.9625_none...
I: Found manifest C:\WINDOWS\WinSxS\Manifests\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9625_none_08e1c10da83fbc83.manifest
I: Searching for file msvcr90.dll
I: Found file C:\WINDOWS\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9625_none_08e1c10da83fbc83\msvcr90.dll
I: Searching for file msvcp90.dll
I: Found file C:\WINDOWS\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9625_none_08e1c10da83fbc83\msvcp90.dll
I: Searching for file msvcm90.dll
I: Found file C:\WINDOWS\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9625_none_08e1c10da83fbc83\msvcm90.dll
I: Searching for assembly amd64_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.30729.9625_none...
I: Found manifest C:\WINDOWS\WinSxS\Manifests\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9625_none_08e1c10da83fbc83.manifest
I: Searching for file msvcr90.dll
I: Found file C:\WINDOWS\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9625_none_08e1c10da83fbc83\msvcr90.dll
I: Searching for file msvcp90.dll
I: Found file C:\WINDOWS\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9625_none_08e1c10da83fbc83\msvcp90.dll
I: Searching for file msvcm90.dll
I: Found file C:\WINDOWS\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.9625_none_08e1c10da83fbc83\msvcm90.dll**
Using Microsft ProcessExplorer I do not see some missing DLL not loaded in these two scenarios. Same forzen executables run & measure (with limitations) in the virtual machine with full dev enviroment in PATH & registry, but the same executable (folder zipped & then unzipped) cannot run dispread when in my actual computer.
There may be something else in a Windows System with a dev enviroment. When next instalable release plese test on a Win Virtual machine or some random laptop with no development enviroment. I think that is the key to debug this issue.
@VgerTest can you look for event logs in Event Manager somewhere labeld Software Events or so. It should give a reason why dispread.exe
is not running. And also there should be a wexpect log or something in %APPDATA%\Roaming\DisplayCAL\logs
(not currently on a Windows machine so I can't check if that path is correct, I don't want to dig into the code too, to get it, sorry...).
W10x64, Frozen exes copied from W10x64 VM py3.10.11 VS2022, zipped in VM, copied to host.
The path is Roaming, not Local if other people want to check.
2024-10-16 22:43:44,083 TCL_LIBRARY=C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\lib\tcl 2024-10-16 22:43:44,084 TK_LIBRARY=C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\lib\tk 2024-10-16 22:43:44,086 SSL_CERT_FILE=C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\lib\cacert.pem
[...]
2024-10-16 22:43:44,088 Spawning C:\bin\calibracion\ArgyllCMS\current\bin\spotread.exe -v -a -x -c1 2024-10-16 22:43:44,089 Code page: 1252 2024-10-16 22:43:44,090 hasattr(sys, 'frozen'): True 2024-10-16 22:43:44,091 "C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\lib\python.exe" -S -c "import sys;setattr(sys, 'frozen', '%s'); sys.path = ['C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14', 'C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\library.zip', 'C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\library.zip\DisplayCAL', 'C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\lib\library.zip', 'C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\lib\library.zip\DisplayCAL'] + sys.path;args = ['C:\bin\calibracion\ArgyllCMS\current\bin\spotread.exe', '-v', '-a', '-x', '-c1']; from DisplayCAL import wexpect;wexpect.ConsoleReader(wexpect.join_args(args), 19808, 15940, cp=1252, c=160, r=None, logdir='DisplayCAL')" 2024-10-16 22:44:04,117 Timeout exceeded in Wtty.spawn().
There are no Windows/Application Events when this error "Can't Start dispread.exe" happened. In the other "folder"/categories in Event Viewer I see nothing at 22:40-22:45
@VgerTest thanks for the output, I see where the error is:
"C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\lib\python.exe" -S -c "import sys;setattr(sys, 'frozen', '%s'); sys.path = ['C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14',
The "%s" in setattr(sys, 'frozen', '%s')
should have been replaced by the value of the sys.frozen
attribute.
Pushed the possible fix, but I can't test it right now. Anyone want to build and test this is welcomed: https://github.com/eoyilmaz/displaycal-py3/blob/develop/docs/install_instructions_windows.md#build-the-installer
currently at it, found out on the way that pywin32 version 307 or newer dont work. Using pywin32==306 atm
so I built it successfully (after I remembered what you wrote about spaces in paths and copied everything to C:/, took me way to long, oh manπ)
(Did not test everything yet, but you can start a calibration now)
@juliuslotter did you install it through the installer?
If yes, I wouldn't recommend moving files, uninstall and install it to the correct place. If no, then can you please try installing it through the installer and try again, please.
@eoyilmaz Yes, tested installing through the installer, also ways work fine.
Only here, the ../../ccss/*.ccss folder with the corrections cant be found during building of the installer. I copied the folder there myself, but obv this cant be the way, where should this one come from?
It is not working for me, using frozen exe folder or building the installer and testing in another VM with 0 development enviroment. I packed as DIsplaycal-py3 sibling folder https://displaycal.net/i1d3.zip, unzipped it, renamed "i1d3" folder to "ccss"
wexpect output changed but dispread could not start:
2024-10-18 20:16:17,396 Spawning C:\bin\ArgyllCMS\Argyll_V3.3.0\bin\spotread.exe -v -a -x -c1
2024-10-18 20:16:17,396 Code page: 1252
2024-10-18 20:16:17,396 hasattr(sys, 'frozen'): True
2024-10-18 20:16:17,411 "C:\bin\DisplayCAL\lib\python.exe" -S -c "import sys;setattr(sys, 'frozen', 'windows_exe'); sys.path = ['C:\\bin\\DisplayCAL', 'C:\\bin\\DisplayCAL\\library.zip', 'C:\\bin\\DisplayCAL\\library.zip\\DisplayCAL', 'C:\\bin\\DisplayCAL\\lib\\library.zip', 'C:\\bin\\DisplayCAL\\lib\\library.zip\\DisplayCAL'] + sys.path;args = ['C:\\bin\\ArgyllCMS\\Argyll_V3.3.0\\bin\\spotread.exe', '-v', '-a', '-x', '-c1']; from DisplayCAL import wexpect;wexpect.ConsoleReader(wexpect.join_args(args), 2952, 5284, cp=1252, c=160, r=None, logdir='DisplayCAL')"
2024-10-18 20:16:37,435 Timeout exceeded in Wtty.spawn().
On virtual machine with dev enviroment it works, this is wexpect log output for taking the same ambient light reading as above:
2024-10-18 20:40:28,261 Spawning C:\bin\ArgyllCMS\Argyll_V3.3.0\bin\spotread.exe -v -a -x -c1
2024-10-18 20:40:28,271 Code page: 1252
2024-10-18 20:40:28,271 hasattr(sys, 'frozen'): True
2024-10-18 20:40:28,271 "D:\src\otros\displaycal-py3\dist\py2exe.win-amd64-py3.10\DisplayCAL-3.9.14\lib\python.exe" -S -c "import sys;setattr(sys, 'frozen', 'windows_exe'); sys.path = ['D:\\src\\otros\\displaycal-py3\\dist\\py2exe.win-amd64-py3.10\\DisplayCAL-3.9.14', 'D:\\src\\otros\\displaycal-py3\\dist\\py2exe.win-amd64-py3.10\\DisplayCAL-3.9.14\\library.zip', 'D:\\src\\otros\\displaycal-py3\\dist\\py2exe.win-amd64-py3.10\\DisplayCAL-3.9.14\\library.zip\\DisplayCAL', 'D:\\src\\otros\\displaycal-py3\\dist\\py2exe.win-amd64-py3.10\\DisplayCAL-3.9.14\\lib\\library.zip', 'D:\\src\\otros\\displaycal-py3\\dist\\py2exe.win-amd64-py3.10\\DisplayCAL-3.9.14\\lib\\library.zip\\DisplayCAL'] + sys.path;args = ['C:\\bin\\ArgyllCMS\\Argyll_V3.3.0\\bin\\spotread.exe', '-v', '-a', '-x', '-c1']; from DisplayCAL import wexpect;wexpect.ConsoleReader(wexpect.join_args(args), 9976, 10912, cp=1252, c=160, r=None, logdir='DisplayCAL')"
on this VM with dev enviroment there is another file: wexpectconsolereader.log
2024-10-18 20:40:28,531 OEM code page: 850
2024-10-18 20:40:28,531 Console output code page: 850
2024-10-18 20:40:28,531 Setting console output code page to 1252
2024-10-18 20:40:28,531 Console output code page: 1252
2024-10-18 20:40:28,531 Spawning C:\bin\ArgyllCMS\Argyll_V3.3.0\bin\spotread.exe -v -a -x -c1
(starting a calibration does not work on clean windows with no dev enviroment, I use ambient light reading test so I can skip putting i1d3 on monitor)
Same error as oaschwab on installer.
Then I tried to build & freeze (py3.10.11, VS2022). No Inno setup, just frozen exes. Frozen executables run OK as long as CCSS and HTML reports have no spaces in path. But generated HTML report is faulty, measured values seem wrong. I'm running this on a W10 virtual machine (py3.10.11, VS2022) and a W10 host. Using either ArgyllCMS or old DisplayCAL using certain CCSS (W10 host) or using DisplayCAL 3.9.14 with "calibrated screen report" (W10 virtual machine) gives same whitepoint. But DisplayCAL 3.9.14 HTML report have color coordinates moved up to 2-3dE like if it has not applied CCSS, although it shows CCSS file on HTML reprort. DisplayCAL 3.9.14 for macOS does not show this issue in HTML reports.
Tested again, HTML report value for whitepoint in XYZ or xyY matches spotread -x -T
without CCSS spectral correction. it seems measurement report is not using CCSS in Windows.
Report (missing CCSS):
2024-10-18 21:23:09,105 Spawning C:\bin\ArgyllCMS\Argyll_V3.3.0\bin\dispread.exe -v -k Measurement_Report_3.9.14_2024-10-18_21-22.cal Measurement_Report_3.9.14_2024-10-18_21-22
2024-10-18 21:23:09,105 Code page: 1252
2024-10-18 21:23:09,105 hasattr(sys, 'frozen'): True
2024-10-18 21:23:09,115 "D:\src\otros\displaycal-py3\dist\py2exe.win-amd64-py3.10\DisplayCAL-3.9.14\lib\python.exe" -S -c "import sys;setattr(sys, 'frozen', 'windows_exe'); sys.path = ['D:\\src\\otros\\displaycal-py3\\dist\\py2exe.win-amd64-py3.10\\DisplayCAL-3.9.14', 'D:\\src\\otros\\displaycal-py3\\dist\\py2exe.win-amd64-py3.10\\DisplayCAL-3.9.14\\library.zip', 'D:\\src\\otros\\displaycal-py3\\dist\\py2exe.win-amd64-py3.10\\DisplayCAL-3.9.14\\library.zip\\DisplayCAL', 'D:\\src\\otros\\displaycal-py3\\dist\\py2exe.win-amd64-py3.10\\DisplayCAL-3.9.14\\lib\\library.zip', 'D:\\src\\otros\\displaycal-py3\\dist\\py2exe.win-amd64-py3.10\\DisplayCAL-3.9.14\\lib\\library.zip\\DisplayCAL'] + sys.path;args = ['C:\\bin\\ArgyllCMS\\Argyll_V3.3.0\\bin\\dispread.exe', '-v', '-k', 'Measurement_Report_3.9.14_2024-10-18_21-22.cal', 'Measurement_Report_3.9.14_2024-10-18_21-22']; from DisplayCAL import wexpect;wexpect.ConsoleReader(wexpect.join_args(args), 9976, 9680, cp=1252, c=160, r=None, logdir='DisplayCAL')"
Calibrated screen report (it uses CCSS)
2024-10-18 21:31:14,587 Spawning C:\bin\ArgyllCMS\Argyll_V3.3.0\bin\dispcal.exe -v2 -d1 -c1 -yn -P0.5,0.5,1.0 -X RG_Phosphor_Family_25Jul12_CN7_MOD.ccss -r
2024-10-18 21:31:14,587 Code page: 1252
2024-10-18 21:31:14,587 hasattr(sys, 'frozen'): True
2024-10-18 21:31:14,587 "D:\src\otros\displaycal-py3\dist\py2exe.win-amd64-py3.10\DisplayCAL-3.9.14\lib\python.exe" -S -c "import sys;setattr(sys, 'frozen', 'windows_exe'); sys.path = ['D:\\src\\otros\\displaycal-py3\\dist\\py2exe.win-amd64-py3.10\\DisplayCAL-3.9.14', 'D:\\src\\otros\\displaycal-py3\\dist\\py2exe.win-amd64-py3.10\\DisplayCAL-3.9.14\\library.zip', 'D:\\src\\otros\\displaycal-py3\\dist\\py2exe.win-amd64-py3.10\\DisplayCAL-3.9.14\\library.zip\\DisplayCAL', 'D:\\src\\otros\\displaycal-py3\\dist\\py2exe.win-amd64-py3.10\\DisplayCAL-3.9.14\\lib\\library.zip', 'D:\\src\\otros\\displaycal-py3\\dist\\py2exe.win-amd64-py3.10\\DisplayCAL-3.9.14\\lib\\library.zip\\DisplayCAL'] + sys.path;args = ['C:\\bin\\ArgyllCMS\\Argyll_V3.3.0\\bin\\dispcal.exe', '-v2', '-d1', '-c1', '-yn', '-P0.5,0.5,1.0', '-X', 'RG_Phosphor_Family_25Jul12_CN7_MOD.ccss', '-r']; from DisplayCAL import wexpect;wexpect.ConsoleReader(wexpect.join_args(args), 8804, 10012, cp=1252, c=160, r=None, logdir='DisplayCAL')"
Can you guys check the Event Manager -> Windows Logs -> Application folder (or similar), right after Argyll executable fails starting, sometimes there is useful information.
Same problem here, and no single event in the Event manager.
OS: Windows 10 22H2 Python Version: 3.11 ArgyllCMS Version: 3.3.0 (at first 32 bit, changed to 64 bit) DisplayCAL Version: 3.9.14 installed through windows installer, into Folder "C:\DisplayCal", as suggested.
The Temp-Folder and also every other folder for .ini, .log etc. are in the User folder (with an space in the path...)
I tried to add the installation folder in the path, also the lib folder. No success. I tried to execute manually the dispread in Powershell, runs there.
In the "wexpect.log" I am getting constantly:
2024-10-20 11:39:16,778 Working directory: C:\Users\KLAUSP~1\AppData\Local\Temp\DisplayCAL-q9fgs2nu
2024-10-20 11:39:16,794 Spawning C:\Users\Klaus Pforte\AppData\Roaming\DisplayCAL\ArgyllCMS\bin\dispread.exe -v -D8 -k C:\DisplayCAL\linear.cal 0_16
2024-10-20 11:39:16,794 Code page: 1252
2024-10-20 11:39:16,794 hasattr(sys, 'frozen'): True
2024-10-20 11:39:16,794 "C:\DisplayCAL\lib\python.exe" -S -c "import sys;setattr(sys, 'frozen', '%s'); sys.path = ['C:\\DisplayCAL', 'C:\\DisplayCAL\\library.zip', 'C:\\DisplayCAL\\library.zip\\DisplayCAL', 'C:\\DisplayCAL\\lib\\library.zip', 'C:\\DisplayCAL\\lib\\library.zip\\DisplayCAL'] + sys.path;args = ['C:\\Users\\Klaus Pforte\\AppData\\Roaming\\DisplayCAL\\ArgyllCMS\\bin\\dispread.exe', '-v', '-D8', '-k', 'C:\\DisplayCAL\\linear.cal', '0_16']; from DisplayCAL import wexpect;wexpect.ConsoleReader(wexpect.join_args(args), 6188, 4080, cp=1252, c=160, r=None, logdir='DisplayCAL')"
2024-10-20 11:39:36,837 Timeout exceeded in Wtty.spawn().
After the Powershell try I have the impression the file "0_16" is not found in the working directory.
But other things are also not running: Profile loader (Display-cal-apply-profiles): tells me: "TypeError: WPARAM is simple, s must be an int object (got NoneType) WARNING: Your version of wxPython (4.2.1) is outdated and no longer supported. You should consider updating to wxPython 4.2.2 or newer."
And also my try to measure the ambient light in "Calibration" showed the error that "spotread" cannot be executed.
In addition to klausspforte test (no event registered) I tried to execute manually that line in wexpect log:
"C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\lib\python.exe" -S -c "import sys;setattr(sys, 'frozen', 'windows_exe'); sys.path = ['C:\\bin\\calibracion\\DisplayCAL\\DisplayCAL-3.9.14', 'C:\\bin\\calibracion\\DisplayCAL\\DisplayCAL-3.9.14\\library.zip', 'C:\\bin\\calibracion\\DisplayCAL\\DisplayCAL-3.9.14\\library.zip\\DisplayCAL', 'C:\\bin\\calibracion\\DisplayCAL\\DisplayCAL-3.9.14\\lib\\library.zip', 'C:\\bin\\calibracion\\DisplayCAL\\DisplayCAL-3.9.14\\lib\\library.zip\\DisplayCAL'] + sys.path;args = ['C:\\bin\\calibracion\\ArgyllCMS\\current\\bin\\spotread.exe', '-v', '-a', '-x', '-c1']; from DisplayCAL import wexpect;wexpect.ConsoleReader(wexpect.join_args(args), 8664, 14492, cp=1252, c=160, r=None, logdir='DisplayCAL')"
just for testing, and it outputs:
Python path configuration:
PYTHONHOME = (not set)
PYTHONPATH = (not set)
program name = 'C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\lib\python.exe'
isolated = 0
environment = 1
user site = 1
import site = 0
sys._base_executable = 'C:\\bin\\calibracion\\DisplayCAL\\DisplayCAL-3.9.14\\lib\\python.exe'
sys.base_prefix = ''
sys.base_exec_prefix = ''
sys.platlibdir = 'lib'
sys.executable = 'C:\\bin\\calibracion\\DisplayCAL\\DisplayCAL-3.9.14\\lib\\python.exe'
sys.prefix = ''
sys.exec_prefix = ''
sys.path = [
'C:\\bin\\calibracion\\DisplayCAL\\DisplayCAL-3.9.14\\lib\\python310.zip',
'.\\DLLs',
'.\\lib',
'C:\\bin\\calibracion\\DisplayCAL\\DisplayCAL-3.9.14\\lib',
]
**Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'**
Current thread 0x00002cbc (most recent call first):
<no Python frame>
Is it possible that there are some missing libs in the windows python installation that is copied in the "frozen executables"? That will explain why I can run the executables in the VM with development enviroment but not in a common Windows. Windows compilaton does not use venvs.
Installing the same exact version of python on test VM with no dev enviroment solves the issue. Just the python 3.10.11 installer, no requirements/dependencies.
So it looks like "DisplayCAL-3.9.14\lib" folder is not properly generated for Windows when running freeze.py or that executing previous post line needs some console sesion variables.
Copying the whole Python 3.10.11 folder from development machine to a machine with no dev enviroment at all, as DisplayCAL subfolder, then setting PYTHONHOME variable (console) to this new subfolder allows to run : "C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\lib\python.exe" -S -c "import sys;setattr(sys, 'frozen', 'windows_exe'); sys.path = ['C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14', 'C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\library.zip', 'C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\library.zip\DisplayCAL', 'C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\lib\library.zip', 'C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\lib\library.zip\DisplayCAL'] + sys.path;args = ['C:\bin\calibracion\ArgyllCMS\current\bin\spotread.exe', '-v', '-a', '-x', '-c1']; from DisplayCAL import wexpect;wexpect.ConsoleReader(wexpect.join_args(args), 8664, 14492, cp=1252, c=160, r=None, logdir='DisplayCAL')"
Setting that enviroment variable systemwide in Windows preferences allows to run DisplayCAL 3.9.13 executables properly. Not a final solution but allows us to test without messing with our "real" machine instalation.
Example, set as user path in windows configuration (after copying that frolder from another machine with a clean Python 3.10.11 installation): PYTHONHOME = C:\bin\calibracion\DisplayCAL\DisplayCAL-3.9.14\Python310 You can use other foder as long as PYTHONHOME references it. You can also install Python3.10.11 but that action will make these installer test not reliable
Setting PYTHONHOME to default python bundled with executables did not work:
(
Installing the same exact version of python on test VM with no dev enviroment solves the issue. Just the python 3.10.11 installer, no requirements/dependencies.
So it looks like "DisplayCAL-3.9.14\lib" folder is not properly generated for Windows when running freeze.py or that executing previous post line needs some console sesion variables.
This may be the case...
With the following steps I could generate a profile and DisplayCal had no warnings:
But after the successful process the Profile Loader sends errors and warnings when opening Windows dialogues for Color Profiles. Maybe this is cosmetics.
@klauspforte when you run DisplayCAL through the available installer you hit the error where the Python command that is run through wexpect
contains setattr(sys, 'frozen', '%s')
instead of setattr(sys, 'frozen', 'windows_exe')
, this was my fault and I fixed it.
I'm confused with @VgerTest's tests to be honest. the library.zip should contain all the required libraries. I'm highly suspecting (and vaguely remembering) that with Python 3.11 there was an update on terminal encodings for Windows that was probably deprecated after Python 3.10.
So, it might be better to generate the DisplayCAL frozen executables with Python 3.10 instead of Python 3.11 and see if it is working properly. Although, the Python 3.11 version is running in my development machine without an error... then it is really a configuration issue...
I'll look into this after I finish my work with #16
Executables were created with 3.10 (3.10.11) on a dev VM. Unless there is a python installation in the system, it seems it cannot call dispcal.exe, dispread.exe... etc So better to test new setup.exe in a system (or VM) where there is no python.
Yes this is definitelly the case, tried with Python 3.9, 3.10 and 3.11. None of the created frozen executables run properly if the folder containing the Python executable that is used to create the frozen executables is renamed. So, definitelly we have a path/envvar issue, as the library.zip
seems to contain everything needed (π€ didn't throughly check though)...
In any case: Thank you for your very kind and outstanding development work and the open discussions!
Pushed the possible fix, but I can't test it right now. Anyone want to build and test this is welcomed: https://github.com/eoyilmaz/displaycal-py3/blob/develop/docs/install_instructions_windows.md#build-the-installer
Just tried installed with pip, run without error can't start dispread.exe and successful calibration process. I can run displaycal with command, But i can't build the installer due to error Line 59.
@ck9393 yes that's the issue, when you run it through pop or build the source it works, it is the frozen library.zip
that has some missing libraries.
Still no solution? same issue here.
Still having this same issue as OP. Is there a solution. Can the Windows Installer still be used? What is the workaround if we have limited programming knowledge?
Unfortunatelly, as I have limited access to a Windows computer, I'm not able to solve this problem right at the moment. There are workarounds though, firstly you can build and run from source.
Another thing to test could be try to installing DisplayCAL with the installer and then also installing Python 3.11 onto your system, I didn't try doing this though.
@ck9393 yes that's the issue, when you run it through pop or build the source it works, it is the frozen
library.zip
that has some missing libraries.
as an update, I tried including every single library and script under Python 3.11 to DisplayCAL and it is still not working. Again, as I have limited access to a Windows computer I cannot work on this issue as much as I would like to. This issue is causing the release of DisplayCAL 3.9.15 to be postponed.
@ck9393 yes that's the issue, when you run it through pop or build the source it works, it is the frozen
library.zip
that has some missing libraries.as an update, I tried including every single library and script under Python 3.11 to DisplayCAL and it is still not working. Again, as I have limited access to a Windows computer I cannot work on this issue as much as I would like to. This issue is causing the release of DisplayCAL 3.9.15 to be postponed.
Thank you for your update. Take you time for the update. On Windows currently can run with Python command, on Mac can install with .dmg and successfully do calibrate. Just not sure any issues on Mac, sometimes DisplayCAL will load everything slow.
I'm able to run the calibration and everything seems to be working smoothly. I also used the "Install through PyPI" directions.
One question: for step 3- "Install DisplayCAL through PyPI: After both Python and Visual Studio Build Tools are installed run the following in the command prompt:"
Does this mean to use Windows Command Prompt or do you run this in the Visual Studio Command Prompt? I used the Windows Command Prompt and all went well. Just was confused about that step. Thanks.
I'm able to run the calibration and everything seems to be working smoothly. I also used the "Install through PyPI" directions.
One question: for step 3- "Install DisplayCAL through PyPI: After both Python and Visual Studio Build Tools are installed run the following in the command prompt:"
Does this mean to use Windows Command Prompt or do you run this in the Visual Studio Command Prompt? I used the Windows Command Prompt and all went well. Just was confused about that step. Thanks.
Yes, i'm using Windows command prompt. If your DisplayCAL not uninstall from Python, next time can just type python -m DisplayCAL to run it.
Describe the bug When trying to start calibration and select "start measurement" I get an error that it can not start dispread.exe. If I go to where that file is supposed to be there is nothing there. I tried manually installing Argyl files to that folder to match the folder where it is looking but I still get the same error.
Expected behavior
Screenshots
Versions (please complete the following information):
Additional context Add any other context about the problem here.