Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Troubles installing the attrici package with python 3.13 #118

Closed
SimonTreu opened this issue Jan 17, 2025 · 3 comments
Closed

Troubles installing the attrici package with python 3.13 #118

SimonTreu opened this issue Jan 17, 2025 · 3 comments
Assignees

Comments

@SimonTreu
Copy link
Collaborator

I tried to install the attrici package locally on my laptop in a new mamba environment which uses python=3.13.

mamba create -n attrici python
mamba activate attrici
pip install -e .

I got the error message below. I could fix the issue by downgrading to python=3.12. I think this should be documented somewhere or in the best case be a fixed dependency such that an out of the box installation works.

(attrici) ➜  attrici git:(develop) pip install -e .
Obtaining file:///home/sitreu/Projects/attrici
  Installing build dependencies ... done
  Checking if build backend supports build_editable ... done
  Getting requirements to build editable ... done
  Preparing editable metadata (pyproject.toml) ... done
Collecting dask (from attrici==1.1.1.dev119+g92be55f)
  Downloading dask-2024.12.1-py3-none-any.whl.metadata (3.7 kB)
Collecting func_timeout (from attrici==1.1.1.dev119+g92be55f)
  Downloading func_timeout-4.3.5.tar.gz (44 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting joblib (from attrici==1.1.1.dev119+g92be55f)
  Downloading joblib-1.4.2-py3-none-any.whl.metadata (5.4 kB)
Collecting loguru (from attrici==1.1.1.dev119+g92be55f)
  Downloading loguru-0.7.3-py3-none-any.whl.metadata (22 kB)
Collecting netCDF4 (from attrici==1.1.1.dev119+g92be55f)
  Downloading netCDF4-1.7.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (1.8 kB)
Collecting numpy (from attrici==1.1.1.dev119+g92be55f)
  Downloading numpy-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (62 kB)
Collecting pandas (from attrici==1.1.1.dev119+g92be55f)
  Downloading pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (89 kB)
Collecting pymc (from attrici==1.1.1.dev119+g92be55f)
  Downloading pymc-5.20.0-py3-none-any.whl.metadata (15 kB)
Collecting scipy (from attrici==1.1.1.dev119+g92be55f)
  Downloading scipy-1.15.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (61 kB)
Collecting tables (from attrici==1.1.1.dev119+g92be55f)
  Downloading tables-3.10.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.0 kB)
Collecting tomlkit (from attrici==1.1.1.dev119+g92be55f)
  Downloading tomlkit-0.13.2-py3-none-any.whl.metadata (2.7 kB)
Collecting tqdm (from attrici==1.1.1.dev119+g92be55f)
  Using cached tqdm-4.67.1-py3-none-any.whl.metadata (57 kB)
Collecting xarray (from attrici==1.1.1.dev119+g92be55f)
  Using cached xarray-2025.1.1-py3-none-any.whl.metadata (11 kB)
Collecting click>=8.1 (from dask->attrici==1.1.1.dev119+g92be55f)
  Downloading click-8.1.8-py3-none-any.whl.metadata (2.3 kB)
Collecting cloudpickle>=3.0.0 (from dask->attrici==1.1.1.dev119+g92be55f)
  Downloading cloudpickle-3.1.1-py3-none-any.whl.metadata (7.1 kB)
Collecting fsspec>=2021.09.0 (from dask->attrici==1.1.1.dev119+g92be55f)
  Using cached fsspec-2024.12.0-py3-none-any.whl.metadata (11 kB)
Collecting packaging>=20.0 (from dask->attrici==1.1.1.dev119+g92be55f)
  Using cached packaging-24.2-py3-none-any.whl.metadata (3.2 kB)
Collecting partd>=1.4.0 (from dask->attrici==1.1.1.dev119+g92be55f)
  Downloading partd-1.4.2-py3-none-any.whl.metadata (4.6 kB)
Collecting pyyaml>=5.3.1 (from dask->attrici==1.1.1.dev119+g92be55f)
  Downloading PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)
Collecting toolz>=0.10.0 (from dask->attrici==1.1.1.dev119+g92be55f)
  Downloading toolz-1.0.0-py3-none-any.whl.metadata (5.1 kB)
Collecting cftime (from netCDF4->attrici==1.1.1.dev119+g92be55f)
  Downloading cftime-1.6.4.post1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (8.7 kB)
Collecting certifi (from netCDF4->attrici==1.1.1.dev119+g92be55f)
  Using cached certifi-2024.12.14-py3-none-any.whl.metadata (2.3 kB)
Collecting python-dateutil>=2.8.2 (from pandas->attrici==1.1.1.dev119+g92be55f)
  Using cached python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting pytz>=2020.1 (from pandas->attrici==1.1.1.dev119+g92be55f)
  Using cached pytz-2024.2-py2.py3-none-any.whl.metadata (22 kB)
Collecting tzdata>=2022.7 (from pandas->attrici==1.1.1.dev119+g92be55f)
  Using cached tzdata-2024.2-py2.py3-none-any.whl.metadata (1.4 kB)
Collecting arviz>=0.13.0 (from pymc->attrici==1.1.1.dev119+g92be55f)
  Downloading arviz-0.20.0-py3-none-any.whl.metadata (8.8 kB)
Collecting cachetools>=4.2.1 (from pymc->attrici==1.1.1.dev119+g92be55f)
  Downloading cachetools-5.5.0-py3-none-any.whl.metadata (5.3 kB)
INFO: pip is looking at multiple versions of pymc to determine which version is compatible with other requirements. This could take a while.
Collecting pymc (from attrici==1.1.1.dev119+g92be55f)
  Downloading pymc-5.19.1-py3-none-any.whl.metadata (15 kB)
  Downloading pymc-5.19.0-py3-none-any.whl.metadata (15 kB)
  Downloading pymc-5.18.2-py3-none-any.whl.metadata (15 kB)
  Downloading pymc-5.18.1-py3-none-any.whl.metadata (15 kB)
  Downloading pymc-5.18.0-py3-none-any.whl.metadata (15 kB)
  Downloading pymc-5.17.0-py3-none-any.whl.metadata (15 kB)
  Downloading pymc-5.16.2-py3-none-any.whl.metadata (15 kB)
INFO: pip is still looking at multiple versions of pymc to determine which version is compatible with other requirements. This could take a while.
  Downloading pymc-5.16.1-py3-none-any.whl.metadata (15 kB)
  Downloading pymc-5.16.0-py3-none-any.whl.metadata (15 kB)
  Downloading pymc-5.15.1-py3-none-any.whl.metadata (10 kB)
  Downloading pymc-5.15.0-py3-none-any.whl.metadata (10 kB)
  Downloading pymc-5.14.0-py3-none-any.whl.metadata (10 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 pymc-5.13.1-py3-none-any.whl.metadata (10 kB)
  Downloading pymc-5.13.0-py3-none-any.whl.metadata (10 kB)
  Downloading pymc-5.12.0-py3-none-any.whl.metadata (10 kB)
Collecting fastprogress>=0.2.0 (from pymc->attrici==1.1.1.dev119+g92be55f)
  Downloading fastprogress-1.0.3-py3-none-any.whl.metadata (5.6 kB)
Collecting pymc (from attrici==1.1.1.dev119+g92be55f)
  Downloading pymc-5.11.0-py3-none-any.whl.metadata (10 kB)
  Downloading pymc-5.10.4-py3-none-any.whl.metadata (10 kB)
  Downloading pymc-5.10.3-py3-none-any.whl.metadata (10 kB)
  Downloading pymc-5.10.2-py3-none-any.whl.metadata (10 kB)
  Downloading pymc-5.10.1-py3-none-any.whl.metadata (10 kB)
  Downloading pymc-5.10.0-py3-none-any.whl.metadata (10 kB)
  Downloading pymc-5.9.2-py3-none-any.whl.metadata (10 kB)
Collecting pytensor<2.18,>=2.17.0 (from pymc->attrici==1.1.1.dev119+g92be55f)
  Downloading pytensor-2.17.1.tar.gz (3.5 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.5/3.5 MB 7.1 MB/s eta 0:00:00
  Installing build dependencies ... error
  error: subprocess-exited-with-error
  
  × pip subprocess to install build dependencies did not run successfully.
  │ exit code: 2
  ╰─> [139 lines of output]
      Collecting setuptools>=48.0.0
        Using cached setuptools-75.8.0-py3-none-any.whl.metadata (6.7 kB)
      Collecting cython
        Downloading Cython-3.0.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.2 kB)
      Collecting numpy<1.26,>=1.17.0
        Downloading numpy-1.25.2.tar.gz (10.8 MB)
           ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.8/10.8 MB 12.3 MB/s eta 0:00:00
        Installing build dependencies: started
        Installing build dependencies: finished with status 'done'
        Getting requirements to build wheel: started
        Getting requirements to build wheel: finished with status 'done'
      ERROR: Exception:
      Traceback (most recent call last):
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/cli/base_command.py", line 105, in _run_wrapper
          status = _inner_run()
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/cli/base_command.py", line 96, in _inner_run
          return self.run(options, args)
                 ~~~~~~~~^^^^^^^^^^^^^^^
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/cli/req_command.py", line 67, in wrapper
          return func(self, options, args)
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/commands/install.py", line 379, in run
          requirement_set = resolver.resolve(
              reqs, check_supported_wheels=not options.target_dir
          )
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 95, in resolve
          result = self._result = resolver.resolve(
                                  ~~~~~~~~~~~~~~~~^
              collected.requirements, max_rounds=limit_how_complex_resolution_can_be
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          )
          ^
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_vendor/resolvelib/resolvers.py", line 546, in resolve
          state = resolution.resolve(requirements, max_rounds=max_rounds)
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_vendor/resolvelib/resolvers.py", line 397, in resolve
          self._add_to_criteria(self.state.criteria, r, parent=None)
          ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_vendor/resolvelib/resolvers.py", line 173, in _add_to_criteria
          if not criterion.candidates:
                 ^^^^^^^^^^^^^^^^^^^^
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_vendor/resolvelib/structs.py", line 156, in __bool__
          return bool(self._sequence)
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 174, in __bool__
          return any(self)
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 162, in <genexpr>
          return (c for c in iterator if id(c) not in self._incompatible_ids)
                             ^^^^^^^^
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 53, in _iter_built
          candidate = func()
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 187, in _make_candidate_from_link
          base: Optional[BaseCandidate] = self._make_base_candidate_from_link(
                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
              link, template, name, version
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          )
          ^
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 233, in _make_base_candidate_from_link
          self._link_candidate_cache[link] = LinkCandidate(
                                             ~~~~~~~~~~~~~^
              link,
              ^^^^^
          ...<3 lines>...
              version=version,
              ^^^^^^^^^^^^^^^^
          )
          ^
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 304, in __init__
          super().__init__(
          ~~~~~~~~~~~~~~~~^
              link=link,
              ^^^^^^^^^^
          ...<4 lines>...
              version=version,
              ^^^^^^^^^^^^^^^^
          )
          ^
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 159, in __init__
          self.dist = self._prepare()
                      ~~~~~~~~~~~~~^^
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 236, in _prepare
          dist = self._prepare_distribution()
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 315, in _prepare_distribution
          return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/operations/prepare.py", line 527, in prepare_linked_requirement
          return self._prepare_linked_requirement(req, parallel_builds)
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/operations/prepare.py", line 642, in _prepare_linked_requirement
          dist = _get_prepared_distribution(
              req,
          ...<3 lines>...
              self.check_build_deps,
          )
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/operations/prepare.py", line 72, in _get_prepared_distribution
          abstract_dist.prepare_distribution_metadata(
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
              finder, build_isolation, check_build_deps
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          )
          ^
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/distributions/sdist.py", line 56, in prepare_distribution_metadata
          self._install_build_reqs(finder)
          ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/distributions/sdist.py", line 126, in _install_build_reqs
          build_reqs = self._get_build_requires_wheel()
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/distributions/sdist.py", line 103, in _get_build_requires_wheel
          return backend.get_requires_for_build_wheel()
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_internal/utils/misc.py", line 701, in get_requires_for_build_wheel
          return super().get_requires_for_build_wheel(config_settings=cs)
                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/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', {
                 ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
              'config_settings': config_settings
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          })
          ^^
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/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/sitreu/miniforge3/envs/attrici/lib/python3.13/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 77, in _build_backend
          obj = import_module(mod_path)
        File "/home/sitreu/miniforge3/envs/attrici/lib/python3.13/importlib/__init__.py", line 88, 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 1026, in exec_module
        File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
        File "/tmp/pip-build-env-nz9bf9nj/overlay/lib/python3.13/site-packages/setuptools/__init__.py", line 10, in <module>
          import distutils.core
      ModuleNotFoundError: No module named 'distutils'
      
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× pip subprocess to install build dependencies did not run successfully.
│ exit code: 2
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.
@rgieseke
Copy link
Collaborator

rgieseke commented Jan 17, 2025

Sorry about that, in #116 we pin to <3.13. Feel free to merge :)

We also just discussed whether we should make Python 3.10 or 3.11 the lowest requirement, any thoughts on that?
(Python 3.10 is only officially supported until October.)

@rgieseke
Copy link
Collaborator

For context, PyMC5 is currently not yet compatible with 3.13: pymc-devs/pymc#7551

@rgieseke
Copy link
Collaborator

Fixed in #116

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants