eoyilmaz / displaycal-py3

DisplayCAL Modernization Project
https://eoyilmaz.github.io/displaycal-py3/
GNU General Public License v3.0
861 stars 60 forks source link

Windows Version Can't Start dispread.exe #424

Open oaschwab opened 1 month ago

oaschwab commented 1 month ago

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 image

Versions (please complete the following information):

Additional context Add any other context about the problem here.

eoyilmaz commented 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....

oaschwab commented 1 month ago

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.

VgerTest commented 1 month ago

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.

VgerTest commented 1 month ago

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**
VgerTest commented 1 month ago

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.

eoyilmaz commented 1 month ago

@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...).

VgerTest commented 1 month ago

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

eoyilmaz commented 1 month ago

@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.

eoyilmaz commented 1 month ago

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

juliuslotter commented 1 month ago

currently at it, found out on the way that pywin32 version 307 or newer dont work. Using pywin32==306 atm

juliuslotter commented 1 month ago

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πŸ˜‚)

424 is gone, its working, yippie πŸŽ‰

(Did not test everything yet, but you can start a calibration now)

eoyilmaz commented 1 month ago

@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.

juliuslotter commented 1 month ago

@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?

VgerTest commented 1 month ago

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)

VgerTest commented 1 month ago

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')"
eoyilmaz commented 1 month ago

Can you guys check the Event Manager -> Windows Logs -> Application folder (or similar), right after Argyll executable fails starting, sometimes there is useful information.

klauspforte commented 1 month ago

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.

VgerTest commented 1 month ago

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.

VgerTest commented 1 month ago

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.

VgerTest commented 1 month ago

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

VgerTest commented 1 month ago

Setting PYTHONHOME to default python bundled with executables did not work: (\DisplayCAL\DisplayCAL-3.9.14\lib)

klauspforte commented 1 month ago

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.

eoyilmaz commented 1 month ago

@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

VgerTest commented 1 month ago

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.

eoyilmaz commented 4 weeks ago

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)...

klauspforte commented 4 weeks ago

In any case: Thank you for your very kind and outstanding development work and the open discussions!

ck9393 commented 4 weeks ago

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.

eoyilmaz commented 4 weeks ago

@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.

cidiousx commented 2 weeks ago

Still no solution? same issue here.

adminmat commented 1 week ago

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?

eoyilmaz commented 1 week ago

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.

eoyilmaz commented 1 week ago

@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 commented 1 week ago

@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.

adminmat commented 1 week ago

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.

ck9393 commented 6 days ago

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.