henrywoo / kazam

Kazam - Linux Desktop Screen Recorder and Broadcaster
GNU General Public License v3.0
133 stars 15 forks source link

Not building/running on Python 3.12 #50

Open cor3000 opened 1 month ago

cor3000 commented 1 month ago

It could be I'm just making a beginners mistake, or not seeing something obvious. I tried to install this on my default python version 3.12 and it failed, while it works correctly on 3.11 Am correct to assume python 3.12 isn't supported yet and should stick with 3.11 for the time being?

henrywoo commented 1 month ago

Can you paste the errors?

cor3000 commented 1 month ago

here everything I am doing, doing the same with python 3.11 just works (so I'm not blocked, just installed another python version to get kazam running ...)

[username@username-nb-red ~]$ pip --version
pip 24.0 from /usr/lib/python3.12/site-packages/pip (python 3.12)
[username@username-nb-red ~]$ pip install kazam
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try 'pacman -S
    python-xyz', where xyz is the package you are trying to
    install.

    If you wish to install a non-Arch-packaged Python package,
    create a virtual environment using 'python -m venv path/to/venv'.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip.

    If you wish to install a non-Arch packaged Python application,
    it may be easiest to use 'pipx install xyz', which will manage a
    virtual environment for you. Make sure you have python-pipx
    installed via pacman.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
[username@username-nb-red ~]$ 
[username@username-nb-red ~]$ 
[username@username-nb-red ~]$ 
[username@username-nb-red ~]$ python -m venv path/to/venv
[username@username-nb-red ~]$ ^C
[username@username-nb-red ~]$ python -m venv ~/python/venv/p312
[username@username-nb-red ~]$ ~/python/venv/p312/bin/pip install kazam
Collecting kazam
  Downloading kazam-1.5.8-py3-none-any.whl.metadata (6.3 kB)
Collecting cmake (from kazam)
  Downloading cmake-3.29.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.1 kB)
Collecting distutils-extra-python (from kazam)
  Downloading distutils_extra_python-2.39.2-py3-none-any.whl.metadata (3.2 kB)
Collecting python-xlib (from kazam)
  Downloading python_xlib-0.33-py2.py3-none-any.whl.metadata (6.2 kB)
Collecting dbus-python (from kazam)
  Downloading dbus-python-1.3.2.tar.gz (605 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 605.5/605.5 kB 3.0 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting hiq-python (from kazam)
  Downloading hiq_python-1.1.12-py3-none-any.whl.metadata (9.0 kB)
Collecting PyGObject (from kazam)
  Downloading pygobject-3.48.2.tar.gz (715 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 715.2/715.2 kB 4.4 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Collecting pyxdg (from kazam)
  Downloading pyxdg-0.28-py2.py3-none-any.whl.metadata (567 bytes)
Collecting pycairo (from kazam)
  Using cached pycairo-1.26.0-cp312-cp312-linux_x86_64.whl
Collecting distro (from kazam)
  Downloading distro-1.9.0-py3-none-any.whl.metadata (6.8 kB)
Collecting PyYAML (from hiq-python->kazam)
  Downloading PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)
Collecting cachetools (from hiq-python->kazam)
  Downloading cachetools-5.3.3-py3-none-any.whl.metadata (5.3 kB)
Collecting psutil (from hiq-python->kazam)
  Downloading psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (21 kB)
INFO: pip is looking at multiple versions of hiq-python to determine which version is compatible with other requirements. This could take a while.
Collecting hiq-python (from kazam)
  Downloading hiq_python-1.1.11-py3-none-any.whl.metadata (9.1 kB)
  Downloading hiq_python-1.1.10-py3-none-any.whl.metadata (8.8 kB)
  Downloading hiq_python-1.1.9-py3-none-any.whl.metadata (8.8 kB)
  Downloading hiq_python-1.1.8-py3-none-any.whl.metadata (8.8 kB)
  Downloading hiq_python-1.1.7-py3-none-any.whl.metadata (5.0 kB)
  Downloading hiq_python-1.1.6-py3-none-any.whl.metadata (5.0 kB)
  Downloading hiq_python-1.1.5-py3-none-any.whl.metadata (4.9 kB)
INFO: pip is still looking at multiple versions of hiq-python to determine which version is compatible with other requirements. This could take a while.
  Downloading hiq_python-1.1.4-py3-none-any.whl.metadata (4.9 kB)
  Downloading hiq_python-1.1.3-py3-none-any.whl.metadata (4.9 kB)
  Downloading hiq_python-1.1.2-py3-none-any.whl.metadata (5.0 kB)
  Downloading hiq_python-1.1.1-py3-none-any.whl.metadata (5.2 kB)
Collecting cachetools~=5.2.0 (from hiq-python->kazam)
  Downloading cachetools-5.2.1-py3-none-any.whl.metadata (5.2 kB)
Collecting hiq-python (from kazam)
  Downloading hiq_python-1.1.0-py3-none-any.whl.metadata (5.2 kB)
INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.
  Downloading hiq_python-1.0.5-py3-none-any.whl.metadata (5.2 kB)
  Downloading hiq_python-1.0.4-py3-none-any.whl.metadata (5.2 kB)
  Downloading hiq_python-1.0.3-py3-none-any.whl.metadata (5.2 kB)
  Downloading hiq_python-1.0.2-py3-none-any.whl.metadata (5.3 kB)
Collecting cachetools~=5.0.0 (from hiq-python->kazam)
  Downloading cachetools-5.0.0-py3-none-any.whl.metadata (4.5 kB)
Collecting hiq-python (from kazam)
  Downloading hiq_python-1.0.1-py3-none-any.whl.metadata (5.3 kB)
Collecting flask~=2.1.1 (from hiq-python->kazam)
  Downloading Flask-2.1.3-py3-none-any.whl.metadata (3.9 kB)
Collecting matplotlib~=3.5.1 (from hiq-python->kazam)
  Downloading matplotlib-3.5.3.tar.gz (35.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 35.2/35.2 MB 9.1 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Collecting numpy~=1.22.3 (from hiq-python->kazam)
  Downloading numpy-1.22.4.zip (11.5 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.5/11.5 MB 8.7 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
ERROR: Exception:
Traceback (most recent call last):
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/cli/base_command.py", line 180, in exc_logging_wrapper
    status = run_func(*args)
             ^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/cli/req_command.py", line 245, in wrapper
    return func(self, options, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/commands/install.py", line 377, in run
    requirement_set = resolver.resolve(
                      ^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 95, in resolve
    result = self._result = resolver.resolve(
                            ^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py", line 546, in resolve
    state = resolution.resolve(requirements, max_rounds=max_rounds)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py", line 427, in resolve
    failure_causes = self._attempt_to_pin_criterion(name)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py", line 239, in _attempt_to_pin_criterion
    criteria = self._get_updated_criteria(candidate)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py", line 230, in _get_updated_criteria
    self._add_to_criteria(criteria, requirement, parent=candidate)
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py", line 173, in _add_to_criteria
    if not criterion.candidates:
           ^^^^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_vendor/resolvelib/structs.py", line 156, in __bool__
    return bool(self._sequence)
           ^^^^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 155, in __bool__
    return any(self)
           ^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 143, in <genexpr>
    return (c for c in iterator if id(c) not in self._incompatible_ids)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 47, in _iter_built
    candidate = func()
                ^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 182, in _make_candidate_from_link
    base: Optional[BaseCandidate] = self._make_base_candidate_from_link(
                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 228, in _make_base_candidate_from_link
    self._link_candidate_cache[link] = LinkCandidate(
                                       ^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 290, in __init__
    super().__init__(
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __init__
    self.dist = self._prepare()
                ^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 222, in _prepare
    dist = self._prepare_distribution()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 301, in _prepare_distribution
    return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/operations/prepare.py", line 525, in prepare_linked_requirement
    return self._prepare_linked_requirement(req, parallel_builds)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/operations/prepare.py", line 640, in _prepare_linked_requirement
    dist = _get_prepared_distribution(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/operations/prepare.py", line 71, in _get_prepared_distribution
    abstract_dist.prepare_distribution_metadata(
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/distributions/sdist.py", line 54, in prepare_distribution_metadata
    self._install_build_reqs(finder)
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/distributions/sdist.py", line 124, in _install_build_reqs
    build_reqs = self._get_build_requires_wheel()
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/distributions/sdist.py", line 101, in _get_build_requires_wheel
    return backend.get_requires_for_build_wheel()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_internal/utils/misc.py", line 745, in get_requires_for_build_wheel
    return super().get_requires_for_build_wheel(config_settings=cs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_impl.py", line 166, in get_requires_for_build_wheel
    return self._call_hook('get_requires_for_build_wheel', {
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_impl.py", line 321, in _call_hook
    raise BackendUnavailable(data.get('traceback', ''))
pip._vendor.pyproject_hooks._impl.BackendUnavailable: Traceback (most recent call last):
  File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 77, in _build_backend
    obj = import_module(mod_path)
          ^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1310, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/tmp/pip-build-env-q511k3sq/overlay/lib/python3.12/site-packages/setuptools/__init__.py", line 10, in <module>
    import distutils.core
ModuleNotFoundError: No module named 'distutils'

reading the release notes of python 3.12 indicates that distutils was removed by default, so maybe there's an easy fix I am missing

https://www.python.org/downloads/release/python-3120/

The deprecated smtpd and distutils modules have been removed (see PEP 594 and PEP 632. The setuptools package continues to provide the distutils module.

trying to install setuptools, also fails ... that's when I rolled back to python 3.11

[username@username-nb-red ~]$ ~/python/venv/p312/bin/pip install setuputils
Collecting setuputils
  Downloading setuputils-1.0.3.tar.gz (9.1 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error

  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [23 lines of output]
      <string>:44: SyntaxWarning: invalid escape sequence '\/'
      Traceback (most recent call last):
        File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/username/python/venv/p312/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
          return hook(config_settings)
                 ^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-8hhepeuq/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 325, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=['wheel'])
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/tmp/pip-build-env-8hhepeuq/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 295, in _get_build_requires
          self.run_setup()
        File "/tmp/pip-build-env-8hhepeuq/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 487, in run_setup
          super().run_setup(setup_script=setup_script)
        File "/tmp/pip-build-env-8hhepeuq/overlay/lib/python3.12/site-packages/setuptools/build_meta.py", line 311, in run_setup
          exec(code, locals())
        File "<string>", line 40, in <module>
        File "/tmp/pip-install-chphwmp4/setuputils_29cba0ae6c2f453cb598859c06b5d1f1/setuputils.py", line 62, in <module>
          from itertools import chain, dropwhile, islice, izip, takewhile
      ImportError: cannot import name 'izip' from 'itertools' (unknown location)
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.